摘要
项目用redis准备配合session
需要jar包:
jedis-2.1.0.jar
commons-pool-1.6.jar
单元测试:
package com.wangbingan.db; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.junit.Before; import org.junit.Test; import com.wangbinga.util.RedisUtil; import redis.clients.jedis.Jedis; /** * Redis测试 * * @author AK * */ public class RedisTest { private Jedis jedis; // private String name = "Usher"; // private String age = "44"; // private String sex = "male"; /** * 测试用例启动前运行 */ @Before public void setup() { // 服务器ip String ip = "60.28.29.22"; // 服务器端口 int port = 6379; // 授权密码 String password = "Ytw-2015#Ehsan"; // 链接redis服务器 jedis = new Jedis(ip, port); // 授权 jedis.auth(password); } /** * String测试 */ @Test public void stringTest() { // 添加数据 jedis.set("name", "Usher"); System.out.println("添加数据:" + jedis.get("name") + "\n"); // 拼接数据 jedis.append("name", "\040is very cool!"); System.out.println("拼接数据:" + jedis.get("name") + "\n"); // 删除数据 jedis.del("name"); System.out.println("删除数据:" + jedis.get("name") + "\n"); // 设置多个数据 jedis.mset("name", "Usher", "age", "24", "sex", "male"); // 某个数据+ jedis.incrBy("age", 10); System.out.println("姓名:" + jedis.get("name") + "\040年龄:" + jedis.get("age") + "\040性别:" + jedis.get("sex") + "\n"); } /** * Map测试 */ @Test public void mapTest() { Map<String, String> map = new HashMap<String, String>(); // 添加数据 map.put("name", "Usher"); map.put("age", "24"); map.put("sex", "male"); // 添加到redis中 jedis.hmset("Information", map); System.out.println("添加Map数据:" + jedis.hmget("Information", "name", "age", "sex") + "\n"); // 删除数据 jedis.hdel("Information", "name"); System.out.println("删除Map数据:" + jedis.hmget("Information", "name") + "\n"); // 返回key=Information的值的个数 System.out.println("返回key=Information的值的个数:" + jedis.hlen("Information") + "\n"); // 判断是否存在key=Information的对象 System.out.println("判断是否存在key=Information的对象:" + jedis.exists("Information") + "\n"); // 返回map对象中的所有key值 System.out.println("返回map对象中的所有key值:" + jedis.hkeys("Information") + "\n"); // 返回map对象中的所有value值 System.out.println("返回map对象中的所有value值:" + jedis.hvals("Information") + "\n"); // 循环迭代key Iterator<String> it = jedis.hkeys("Information").iterator(); // 判断是否有元素存在 while (it.hasNext()) { // 获取元素key String key = it.next(); System.out.println("返回key为" + key + "的值:" + jedis.hmget("Information", key) + "\n"); } } /** * List测试 */ @Test public void listTest() { // 先清空List jedis.del("Information"); // 查看List是否清空 System.out.println("Lis[清空后]t:" + jedis.lrange("Information", 0, -1) + "\n"); // 添加数据 jedis.lpush("Information", "Usher"); jedis.lpush("Information", "sex"); jedis.lpush("Information", "age"); // 查看List元素 System.out.println("List[添加后]:" + jedis.lrange("Information", 0, -1) + "\n"); // 清空List jedis.del("Information"); // 添加数据 jedis.lpush("Information", "Elliot"); jedis.lpush("Information", "sex"); jedis.lpush("Information", "age"); // 查看List元素 System.out.println("List[清空+添加]:" + jedis.lrange("Information", 0, -1) + "\n"); } /** * set测试 */ @Test public void setTest() { // 添加元素 jedis.sadd("user", "Usher"); jedis.sadd("user", "sex"); jedis.sadd("user", "age"); System.out.println("Key的value值[删除前]:" + jedis.smembers("user") + "\n"); // 删除元素 jedis.srem("user", "age"); // 所有元素的value() System.out.println("Key的value值[删除后]:" + jedis.smembers("user") + "\n"); // 判断值是否存在 System.out.println("判断值是否存在:" + jedis.sismember("user", "age") + "\n"); // 返回集合元素的个数 System.out.println("返回集合元素的个数:" + jedis.scard("user") + "\n"); // 返回随机元素 System.out.println("返回随机元素:" + jedis.srandmember("user") + "\n"); } /** * jedis 排序 */ @Test public void sortTest() { // 添加元素 jedis.rpush("sort", "1"); jedis.lpush("sort", "2"); jedis.lpush("sort", "3"); jedis.lpush("sort", "4"); System.out.println("元素:" + jedis.lrange("sort", 0, -1) + "\n"); // 排序 System.out.println("排序:" + jedis.sort("sort") + "\n"); // jedis.sort("sort"); // 再输出一次 // System.out.println("元素:" + jedis.lrange("sort", 0, -1) + "\n"); } /** * 测试中文 */ @Test public void chineseTest() { RedisUtil.getJedis().set("name", "中文测试"); System.out.println(RedisUtil.getJedis().get("name")); } }
redis连接池:
package com.wangbinga.util; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * Redis连接池 * * @author AK * */ public final class RedisUtil { // Redis服务器IP private static String ADDR = "60.28.29.22"; // Redis的端口号 private static int PORT = 6379; // 访问密码 private static String AUTH = "Ytw-2015#Ehsan"; // 可用连接实例的最大数目,默认值为8; // 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。 private static int MAX_ACTIVE = 1024; // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。 private static int MAX_IDLE = 200; // 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException; private static long MAX_WAIT = 10000; // 最大延迟时间 private static int TIMEOUT = 10000; // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; private static boolean TEST_ON_BORROW = true; private static JedisPool jedisPool = null; /** * 初始化Redis连接池 */ static { try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(MAX_ACTIVE); config.setMaxIdle(MAX_IDLE); config.setMaxWait(MAX_WAIT); config.setTestOnBorrow(TEST_ON_BORROW); jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH); } catch (Exception e) { e.printStackTrace(); } } /** * 获取Jedis实例 * * @return */ public synchronized static Jedis getJedis() { try { if (jedisPool != null) { Jedis resource = jedisPool.getResource(); return resource; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } } /** * 释放jedis资源 * * @param jedis */ public static void returnResource(final Jedis jedis) { if (jedis != null) { jedisPool.returnResource(jedis); } } }
最上面的2个jar包很重要(版本o),因为redis的连接池有些方法在jedis-2.1.0才有,如果别的版本可能没有这个方法。
还有连接池操作的时候需要有commons-pool-1.6.jar这个包,因为第一次用java写连接池,所以不太懂,但是我觉得
只要用到连接池的地方,肯定会有这个包,哈哈,机智的我!
相关推荐
这是一份关于redis缓存技术的一些资料,有需要的可以下载看看。
这是Redis缓存技术的一些运用。代码简洁明了,通俗易懂。可以加深你对redis缓存技术的学习。
redis缓存技术入门代码,简单易懂,推荐下载 (对应博客地址:https://blog.csdn.net/weixin_44519467/article/details/106575190)
该项目功能完善,包括部门,用户,角色,权限管理。密码使用md5加密,部门与权限模块使用树形结构,递归生成。项目里还有redis缓存技术,使用的是jedis工具包。数据库使用的MySQL5.5,编译器采用的idea2018.
在LINUX系统上配置redis数据库,了解redis数据库的五大基本数据类型以及主从复制等,通过这些基础最终学会使用Java操纵redis数据库。
2.4 redis缓存数据库 9 2.5 RabbitMQ消息队列 10 3 需求分析与设计 10 3.1 可行性分析 10 3.1.1技术可行性 10 3.1.2 经济可行性 11 3.1.3操作可行性 11 3.2 系统功能分析 11 3.3 系统功能结构图 11 3.4 系统流程图 ...
整理了框架底层是按技术(包括反射,XML,设计模式)及Redis缓存数据库技术。 Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法...
在这个项目中简单实现了springboot对redis缓存,Mybatis-Plus,mongodb等数据库相关的技术点,实现数据获取,可以直接在以后的项目中仿照使用。并且整合了exsyexcel等数据文件导入导出功能,后续会继续汇总整合一些...
主要介绍了Java操作Redis详细介绍,涉及对key的操作,string数据类型,list数据类型等相关内容,具有一定参考价值,需要的朋友可以了解下。
基于Redis的点赞功能实现demo 开发环境 windows10 os Maven 3.6.1 JDK 1.8 技术栈 MySQL Redis MyBatisPlus SpringBoot 程序运行 创建数据库&导入表 1.创建article-like数据库 2.数据库表结构在sql文件夹下 启动本地...
redis的缓存失效策略和主键失效机制【java面试常问】.docx
一个功能完备的个人博客系统, redis缓存记录可恢复未完成的博客。可以自己使用或者学习 后端框架是SpringBoot、Mybatis,前端框架是VUE,数据库使用MySQL,缓存中间件Redis等技术 博客系统分为前台展示页面、...
Redis-Java是一款由Java语言实现的高性能缓存中间件,基于TCP实现客户端与服务端双向通信。 基本功能 客户端、服务端收发字节流 服务端解析字节流,执行命令 五大数据类型的命令、通用命令支持 RDB、AOF持久化机制...
RuoYi是一个基于Java技术开发的后台管理系统,基于技术组合(SpringBoot+Vue),内置模块有:部门管理、角色用户、菜单即按钮授权、数据权限、系统参数、日志管理、...支持多数据源、支持分布式事务、支持Redis缓存。
Redis高性能缓存库面试~老司机带你解读哨兵模式实现网站限流实战
java标准项目搭建,只要修改配置文件的ip就可以正常启动,包含查数据库,redis缓存技术,切面在service,可以设置缓存有效期,elaticsearch搜索技术,elaticsearch工具类,上传文件等工具类!初学者很好的帮助代码!...
主要介绍了javaWeb中使用Redis缓存实例解析,具有一定借鉴价值,需要的朋友可以参考下
有志于做JAVA系统性的技术提升的同学可与我联系,交个朋友哦~ 本人十余年JAVA架构设计经验,擅长JAVA高可用、分布式、高并发系统架构设计。有志于做JAVA系统性的技术提升的同学可与我联系,交个朋友哦~ 本人十余年...
Redis(REmote DIctionary Server)是一个Key Value存储系统,是非常...掌握Redis在Windows和Linux下的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等技术点
基于SpringBoot+Mybatis-Plus+Redis的二手交易网站,该系统的主要功能模块包括订单、购物车、消息发布、卖家买家等...后端采用 Java 语言 [SpringBoot] 、[Spring]、[SpringMVC]、MyBatis-Plus、Swagger、Redis等技术。