配置 Spring Data Redis 组件

最近更新时间:2025-03-04 11:50:23

我的收藏
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 参数,也可根据需求,选择性配置数据库等信息。如下所示。
# 必须配置
# 在Redis 控制台实例详情页面的网络信息区域获取内网IPv4地址与端口
spring.data.redis.host=172.27.XX.XX
spring.data.redis.port=6379
# 在Redis 控制台的账号管理页面,可获取账号密码,默认账号,则直接指定密码即可;若自定义账号,则配置为账号名@密码。
spring.data.redis.password=XXXXXX
# 可选配置
# 指定具体的数据库名
spring.data.redis.database=X
# 指定客户端超时时长,单位为:ms
spring.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;
@Component
public class RedisInterface {
@Autowired
private 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);
}
}