著名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-corespring-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数据模型。

  1. <!-- springboot整合redis依赖,以spring-boot为前缀都是spring官方提供的集成依赖,最新版本为2.4.2 -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-redis</artifactId>
  5. <version>2.4.2</version>
  6. </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