一.Redis 的Java客户端
jedis的官方仓库地址:
https://github.com/redis/jedis
Redis 数据结构
Redis 是一个 key-value 的数据库,key 一般是 String 类型,不过 value 的类型多种多样。
1.1 引入Redis依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.7.0</version>
</dependency>
建立一个单元测试:
建立jedis链接,因为我的redis没有设置密码,所以注释掉了。
@BeforeEach
void setUp(){
jedis=new Jedis("127.0.0.1",6379);
// jedis.auth("123321");
jedis.select(0);
}
junit测试:
@Test
void testString(){
// 存入数据
String result =jedis.set("name","小猪");
System.out.println("result"+result);
// 获取数据
String name = jedis.get("name");
System.out.println("name = "+name);
}
JUnit5 @AfterEach 注解替换了 JUnit4 中的@After注解。它用于表示应在当前类中的每个@Test方法之后执行注解方法。
@AfterEach
void tearDown(){
if (jedis!=null){
jedis.close();
}
}
执行结果:
到RESP里检查:
RESP配置:RESP配置非常的简单:
如下:
1.2 Hash例子
插入一个Hash例子:
void testHash(){
// 插入hash数据
jedis.hset("user:1","name","jack");
jedis.hset("user:1","age", "21");
// 获取
Map<String,String> map= jedis.hgetAll("user:1");
System.out.println(map);
}
运行结果:
到RESP里查看:
1.3 Redis使用步骤总结
Jedis基本使用步骤:
1.引入依赖
2.创建 Jedis 对象, 建立连接
3.使用 Jedis, 方法名与 Red is 命令一致
4.释放资源
二.Jedis连接池
Jedis 本身是线程不安全的, 并且频繁的创建和销毁连接会有性能损耗, 因此我们推荐大家使用 Jedis 连接池代替 Jedis 的直连方式。
新建立一个Jedis连接池,如下:
public class JedisConnectionFacory {
private static final JedisPool jedisPool;
static {
// 配置连接池
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(8); //最大连接数
poolConfig.setMaxIdle(8);//预备连接数
poolConfig.setMinIdle(0);//最小连接数
poolConfig.setMaxWaitMillis(1000);//等待时间
// 创建连接池对象
jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379,1000);
}
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
最大连接数:
poolConfig.setMaxTotal(8);
预备连接数:
poolConfig.setMaxIdle(8);
最小连接数:
poolConfig.setMinIdle(0);
将上面的单元测试,连接的池改为前面的Jedis连接池。
// jedis=new Jedis("127.0.0.1",6379);
jedis= JedisConnectionFacory.getJedis();
// jedis.auth("123321");
jedis.select(0);
测试:没有问题。
1.2 SpringDataRedis
SpringData 是 Spring 中数据操作的模块,包含对各种数据库的集成,其中对 Redis 的集成模块就叫做 SpringDataRedis
- 提供了对不同 Redis 客户端的整合(Lettuce 和 edis)
- 提供了 RedisTemplate 统一 API 来操作 Redis
- 支持 Redis 的发布订阅模型
- 支持 Redis 哨兵和 Redis 集群
- 支持基于 Lettuce 的响应式编程
- 支持基于 JDK、JSON、字符串、Spring 对象的数据序列化及反序列化
- 支持基于 Redis 的 DKCollection 实现
Spring Data Red is 中提供了 Red is Template 工具类, 其中封装了各种对 Red is 的操作。并且将不同数据类型的操作 API 封装到了不同的类型中:
1.2.1 创建一个新的项目
创建一个Spring项目。如下图:
选择一个NoSQL:Redis,如下图。
如下:
SpringBoot 已经提供了对 SpringDataRedis 的支持,使用非常简单:
1.引入依赖redis:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.引入common-pool依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>