著名Redis Java客户端工具有Jedis和Lettuce,Jedis目前github start有9.6k,lettuce-core目前github start有3.7k,另外SpringBoot也提供了对Redis的支持(如下面的pom.xml),spring-boot-starter-data-redis是由Spring官方推出的SpringBoot与Redis的集成依赖,spring-boot-starter-data-redis依赖主要由lettuce-core和spring-data-redis组成,spring-data-redis也集成了jedis,下面将会介绍spring-boot-starter-data-redis的用法。
Jedis是一款轻量级的Redis Java客户端工具库,它可以实现以下功能:
- 排序
- 连接处理
- 在任何类型的值上运行的命令
- 对字符串值进行操作的命令
- 对哈希操作的命令
- 在列表上操作的命令
- 在集合上操作的命令
- 对排序集进行操作的命令
- 在流上运行的命令
- 交易次数
- 流水线
- 发布/订阅
- 持久性控制命令
- 远程服务器控制命令
- 连接池
- 分片(MD5,MurmurHash)
- 分片的关键标签
- 流水线分片
- 使用流水线编写脚本
- Redis集群
Lettuce是一个高性能基于Java编写的Redis驱动框架,底层集成了Project Reactor提供天然的反应式编程,通信框架集成了Netty使用了非阻塞IO,5.x版本之后融合了JDK1.8的异步编程特性,在保证高性能的同时提供了十分丰富易用的API,高级Redis功能,例如Sentinel,群集,管道,自动重新连接和Redis数据模型。
<!-- springboot整合redis依赖,以spring-boot为前缀都是spring官方提供的集成依赖,最新版本为2.4.2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.4.2</version>
</dependency>
RedisConnection提供了Redis通信的核心构建块,因为它处理与Redis后端的通信。通过RedisConnectionFactory接口可以得到一个RedisConnection对象,上面也介绍了Lettuce和Jedis,它们都实现了RedisConnectionFactory接口,你可以使用LettuceRedisConnectionFactory和JedisRedisConnectionFactory创建一个RedisConnection对象(前提是引入对应的包)。
使用LettuceConnectionFactory连接器:
<dependencies>
<!-- other dependency elements omitted -->
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.0.3.RELEASE</version>
</dependency>
</dependencies>
@Configuration
class AppConfig {
@Bean
public LettuceConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(new RedisStandaloneConfiguration("server", 6379));
}
}
使用JedisConnectionFactor连接器:
<dependencies>
<!-- other dependency elements omitted -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
</dependencies>
@Configuration
class AppConfig {
@Bean
public JedisConnectionFactory redisConnectionFactory() {
return new JedisConnectionFactory();
}
}
1.RedisTemplate与StringRedisTemplate模板类
RedisTemplate是Redis模块的核心类,该模板为Redis交互提供了高级抽象。虽然RedisConnection提供了接受和返回二进制值(byte数组)的低级方法,但是模板负责序列化和连接管理,使用户无需处理此类细节。
StringRedisTemplate是针对于字符串类型(例如key,字符串类型的value)处理的模板类,它提供了很多操作字符串类型的API。
RedisTemplate提供了如下数据来操作Redis数据结构:
API | 描述 | |
---|---|---|
GeoOperations | 提供针对于Redis中Geo数据处理API | |
HashOperations | 提供针对于Redis HashMap结构处理的API | |
HyperLogLogOperations | 提供针对于Redis HyperLogLog数据处理的API | |
ListOperations | 提供针对于Redis列表数据处理的API | |
SetOperations | 提供针对于集合数据处理的API | |
ValueOperations | 提供针对Value值处理的API | |
ZSetOperations | 提供针对于有序集合处理的API | |
绑定相关API | ||
BoundGeoOperations | ||
BoundHashOperations |