Spring Data Redis 是 Spring Data 项目下的一个子项目,旨在为 Redis 提供易用且高效的操作支持。它为 Spring 应用程序与 Redis 数据库之间的交互提供了一个抽象层,简化了 Redis 数据库的访问和操作,统一了数据访问的方式。通过 Spring Data Redis,开发者可以使用熟悉的 Spring 风格来操作 Redis。
创建 Spring Boot 项目
如下使用 IntelliJ IDEA 创建项目 RedisMonitor,类型选择 Maven。

配置 Spring Data Redis 组件依赖
在项目的 pom.xml 中加入 Spring Data Redis 组件依赖,如下所示。
说明:
Spring Boot 在检测到 spring-boot-starter-data-redis 依赖后,会自动创建一个 RedisTemplate 的实例(Bean),并将其注册到 Spring 容器中。RedisTemplate 是 Spring Data Redis 提供的一个高级抽象,用于简化 Redis 的操作。它封装了 Redis 的底层命令,提供了更方便、更安全的方式来操作 Redis 数据库。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
配置 Redis 信息
在配置文件 application.properties 中配置 Redis 的 host、port 以及 password 参数,也可根据需求,选择性配置数据库等信息。如下所示。
# 必须配置spring.data.redis.host=172.27.XX.XXspring.data.redis.port=6379spring.data.redis.password=XXXXXX# 可选配置# 指定具体的数据库名spring.data.redis.database=X# 指定客户端超时时长,单位为:msspring.data.redis.timeout=XXXX# 指定 Spring Boot 客户端类型spring.data.redis.client-type=lettuce
使用 RedisTemplate 实现 Redis 接口类
基于 RedisTemplate 实现一个工具类 RedisInterface.java,封装了常用的 Redis 操作命令。
package com.example.redismonitor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import java.util.List;import java.util.Map;import java.util.Set;@Componentpublic class RedisInterface {@Autowiredprivate RedisTemplate redisTemplate;//- - - - - - - - - - - - - - - - - - - - - string - - - - - - - - - - - - - - - - - - - -public String get(String key) {return (String) redisTemplate.opsForValue().get(key);}public void set(String key, Object value) {redisTemplate.opsForValue().set(key, value);}//- - - - - - - - - - - - - - - - - - - - - set - - - - - - - - - - - - - - - - - - - -public Long sadd(String key, Object... values) {return redisTemplate.opsForSet().add(key, values);}public Long srem(String key, Object... values) {return redisTemplate.opsForSet().remove(key, values);}public Set<Object> smembers(String key) {return redisTemplate.opsForSet().members(key);}public Boolean sismember(String key, Object value) {return redisTemplate.opsForSet().isMember(key, value);}//- - - - - - - - - - - - - - - - - - - - - hash - - - - - - - - - - - - - - - - - - - -public void hset(String key, String field, Object value) {redisTemplate.opsForHash().put(key, field, value);}public Object hget(String key, String field) {return redisTemplate.opsForHash().get(key, field);}public Map<Object, Object> hgetAll(String key) {return redisTemplate.opsForHash().entries(key);}public Long hdel(String key, Object... fields) {return redisTemplate.opsForHash().delete(key, fields);}//- - - - - - - - - - - - - - - - - - - - - list - - - - - - - - - - - - - - - - - - - -public void lpush(String key, Object value) {redisTemplate.opsForList().leftPush(key, value);}public void rpush(String key, Object value) {redisTemplate.opsForList().rightPush(key, value);}public String lpop(String key) {return redisTemplate.opsForList().leftPop(key).toString();}public String rpop(String key) {return redisTemplate.opsForList().rightPop(key).toString();}public List<Object> range(String key, long start, long end) {return redisTemplate.opsForList().range(key, start, end);}//- - - - - - - - - - - - - - - - - - - - - zset - - - - - - - - - - - - - - - - - - - -public Boolean zadd(String key, Object value, double score) {return redisTemplate.opsForZSet().add(key, value, score);}public Set<Object> zrangeByScore(String key, double min, double max) {return redisTemplate.opsForZSet().rangeByScore(key, min, max);}public Long zrank(String key, Object value) {return redisTemplate.opsForZSet().rank(key, value);}public Long zrem(String key, Object... values) {return redisTemplate.opsForZSet().remove(key, values);}}