目录
1. 添加依赖
2. 配置连接信息
3. 配置 RedisConnectionFactory 和 RedisTemplate
4.在Java中操作Redis
4.1. String 类型操作
4.2 List 类型操作
4.3 Set 类型操作
4.4 Hash类型操作
4.5 sorted set类型操作
Spring Data Redis 是 Spring Data 项目的一部分,它为 Java 应用程序提供了在 Spring 环境中与 Redis 数据库进行交互的便捷方式。通过 Spring Data Redis,可以利用自动配置、模板类(RedisTemplate)、Repository 接口以及对 Redis 数据结构的支持来简化开发工作。
在 Maven 或 Gradle 构建文件中添加 Spring Data Redis 依赖。
org.springframework.boot
spring-boot-starter-data-redis
# application.yml
spring:
redis:
host: localhost
port: 6379
Spring Boot 自动配置会创建一个 RedisConnectionFactory 实例和默认的 RedisTemplate。如果需要自定义序列化器或配置其他选项,可以自己配置:
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
RedisTemplate template = new RedisTemplate<>();
template.setConnectionFactory(factory);
// 设置 key 和 value 的序列化器
Jackson2JsonRedisSerializer
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
@Autowired
private StringRedisTemplate redisTemplate;
// 1. 设置(保存)字符串值
public void setStringValue(String key, String value) {
ValueOperations operations = redisTemplate.opsForValue();
operations.set(key, value);
}
// 2. 获取字符串值
public String getStringValue(String key) {
ValueOperations operations = redisTemplate.opsForValue();
return operations.get(key);
}
// 3. 自增操作(如果key不存在,则默认设置为0再进行自增)
public Long increment(String key) {
return redisTemplate.opsForValue().increment(key);
}
// 4. 自减操作
public Long decrement(String key) {
return redisTemplate.opsForValue().decrement(key);
}
// 5. 设置带过期时间的键值对
public void setExpiryKeyValue(String key, String value, long timeout, TimeUnit timeUnit) {
redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
}
// 6. 获取字符串长度
public Long stringLength(String key) {
return redisTemplate.opsForValue().size(key);
}
// 7. 追加字符串到已存在的key后
public Long appendToKey(String key, String value) {
return redisTemplate.opsForValue().append(key, value);
}
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
// 1. 将元素添加到列表的头部(左侧)
public void addToListHead(String key, Object value) {
ListOperations listOps = redisTemplate.opsForList();
listOps.leftPush(key, value);
}
// 2. 将元素添加到列表的尾部(右侧)
public void addToListTail(String key, Object value) {
ListOperations listOps = redisTemplate.opsForList();
listOps.rightPush(key, value);
}
// 3. 从列表头部弹出一个元素并返回
public Object popFromListHead(String key) {
ListOperations listOps = redisTemplate.opsForList();
return listOps.leftPop(key);
}
// 4. 从列表尾部弹出一个元素并返回
public Object popFromListTail(String key) {
ListOperations listOps = redisTemplate.opsForList();
return listOps.rightPop(key);
}
// 5. 获取列表指定范围内的元素(左闭右开区间 [start, end))
public List
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.RedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
// 1. 添加元素到集合中(如果元素已存在,则不添加)
public Long addToSet(String key, Object... values) {
SetOperations setOps = redisTemplate.opsForSet();
return setOps.add(key, values);
}
// 2. 从集合中移除指定元素
public Long removeFromSet(String key, Object... values) {
SetOperations setOps = redisTemplate.opsForSet();
return setOps.remove(key, values);
}
// 3. 判断元素是否存在于集合中
public Boolean isMemberOfSet(String key, Object value) {
SetOperations setOps = redisTemplate.opsForSet();
return setOps.isMember(key, value);
}
// 4. 获取集合中的所有元素
public Set
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
// 1. 设置Hash中的字段值
public void setHashField(String key, String field, Object value) {
HashOperations hashOps = redisTemplate.opsForHash();
hashOps.put(key, field, value);
}
// 2. 获取Hash中指定字段的值
public Object getHashFieldValue(String key, String field) {
HashOperations hashOps = redisTemplate.opsForHash();
return hashOps.get(key, field);
}
// 3. 获取整个Hash的所有字段和值
public Map
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.data.redis.core.RedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
// 1. 向有序集合添加成员并设置分数
public Long addToSortedSet(String key, Object value, double score) {
ZSetOperations zSetOps = redisTemplate.opsForZSet();
return zSetOps.add(key, value, score);
}
// 2. 根据分数范围获取有序集合中的成员
public Set