RedisTemplate 核心操作API汇总(Spring Data Redis)

引言

Spring Data Redis 提供的 RedisTemplate 是操作 Redis 的核心工具类,通过 opsForXxx() 系列方法,可直接适配 Redis 支持的 5 种核心数据类型(String、Hash、List、Set、SortedSet),同时提供通用命令处理所有 key 的生命周期操作。本文按标准格式汇总所有核心 API 及常用方法,便于快速查阅与开发使用。


1. 核心API总览

(一级标题采用小4号黑体加粗,表格字体为5号宋体,与示例格式一致)

API 返回值类型 说明
redisTemplate.opsForValue() ValueOperations 操作String类型数据
redisTemplate.opsForHash() HashOperations 操作Hash类型数据
redisTemplate.opsForList() ListOperations 操作List类型数据
redisTemplate.opsForSet() SetOperations 操作Set类型数据
redisTemplate.opsForZSet() ZSetOperations 操作SortedSet(ZSet)类型数据
redisTemplate RedisTemplate 调用所有数据类型通用的命令

2. 各数据类型详细操作API

2.1 String类型数据操作(redisTemplate.opsForValue()
API 返回值类型 说明
opsForValue().set(K key, V value) void 设置String类型键值对,key存在则覆盖
opsForValue().set(K key, V value, long timeout, TimeUnit unit) void 设置键值对并指定过期时间
opsForValue().setIfAbsent(K key, V value) Boolean 仅当key不存在时设置值(等价于原生SETNX命令)
opsForValue().setIfAbsent(K key, V value, long timeout, TimeUnit unit) Boolean 不存在时设置值并同时指定过期时间
opsForValue().get(Object key) V 获取指定key对应的String类型值
opsForValue().getAndSet(K key, V value) V 获取key旧值并设置新值
opsForValue().increment(K key) Long 数值类型key原子自增1
opsForValue().decrement(K key) Long 数值类型key原子自减1
opsForValue().append(K key, String value) Integer 向字符串末尾追加内容
opsForValue().size(K key) Long 获取字符串长度

2.2 Hash类型数据操作(redisTemplate.opsForHash()
API 返回值类型 说明
opsForHash().put(H key, HK hashKey, HV value) void 设置Hash中指定字段的值
opsForHash().putAll(H key, Map<? extends HK, ? extends HV> map) void 批量设置Hash的多个字段值
opsForHash().putIfAbsent(H key, HK hashKey, HV value) Boolean 仅当Hash字段不存在时设置值
opsForHash().get(H key, Object hashKey) HV 获取Hash中指定字段的值
opsForHash().multiGet(H key, Collection<HK> hashKeys) List<HV> 批量获取Hash中多个字段的值
opsForHash().entries(H key) Map<HK, HV> 获取Hash中所有字段与对应值
opsForHash().keys(H key) Set<HK> 获取Hash中所有字段名
opsForHash().values(H key) List<HV> 获取Hash中所有字段值
opsForHash().hasKey(H key, Object hashKey) Boolean 判断Hash中是否存在指定字段
opsForHash().delete(H key, Object... hashKeys) Long 删除Hash中指定的字段
opsForHash().increment(H key, HK hashKey, long delta) Long Hash中指定字段数值原子增减(delta为负则自减)
opsForHash().size(H key) Long 获取Hash中字段的数量

2.3 List类型数据操作(redisTemplate.opsForList()
API 返回值类型 说明
opsForList().leftPush(K key, V value) Long 从列表左侧(头部)插入元素
opsForList().leftPushAll(K key, V... values) Long 从列表左侧批量插入多个元素
opsForList().rightPush(K key, V value) Long 从列表右侧(尾部)插入元素
opsForList().rightPushAll(K key, V... values) Long 从列表右侧批量插入多个元素
opsForList().leftPop(K key) V 从列表左侧弹出并返回元素
opsForList().rightPop(K key) V 从列表右侧弹出并返回元素
opsForList().range(K key, long start, long end) List<V> 获取列表指定索引范围的元素(-1表示末尾)
opsForList().size(K key) Long 获取列表的长度
opsForList().remove(K key, long count, Object value) Long 删除列表中指定数量的元素(count>0从左删,<0从右删)
opsForList().set(K key, long index, V value) void 设置列表指定索引位置的元素值
opsForList().index(K key, long index) V 获取列表指定索引位置的元素
opsForList().trim(K key, long start, long end) void 裁剪列表,仅保留指定索引范围的元素

2.4 Set类型数据操作(redisTemplate.opsForSet()
API 返回值类型 说明
opsForSet().add(K key, V... values) Long 向集合添加一个或多个元素
opsForSet().members(K key) Set<V> 获取集合中的所有元素
opsForSet().isMember(K key, Object value) Boolean 判断元素是否存在于集合中
opsForSet().remove(K key, Object... values) Long 删除集合中指定的元素
opsForSet().pop(K key) V 随机弹出并返回集合中的一个元素
opsForSet().randomMember(K key) V 随机获取集合中的一个元素(不删除)
opsForSet().size(K key) Long 获取集合中元素的数量
opsForSet().union(K key, Collection<K> otherKeys) Set<V> 求多个集合的并集
opsForSet().intersect(K key, Collection<K> otherKeys) Set<V> 求多个集合的交集
opsForSet().difference(K key, Collection<K> otherKeys) Set<V> 求当前集合与其他集合的差集

2.5 SortedSet(ZSet)类型数据操作(redisTemplate.opsForZSet()
API 返回值类型 说明
opsForZSet().add(K key, V value, double score) Boolean 向有序集合添加元素并指定分数
opsForZSet().range(K key, long start, long end) Set<V> 按分数升序,获取指定索引范围的元素
opsForZSet().rangeWithScores(K key, long start, long end) Set<ZSetOperations.TypedTuple<V>> 按分数升序,获取指定范围的元素及对应分数
opsForZSet().reverseRange(K key, long start, long end) Set<V> 按分数降序,获取指定索引范围的元素
opsForZSet().score(K key, Object value) Double 获取指定元素的分数
opsForZSet().incrementScore(K key, V value, double delta) Double 原子增减指定元素的分数(delta为负则自减)
opsForZSet().remove(K key, Object... values) Long 删除有序集合中的指定元素
opsForZSet().removeRange(K key, long start, long end) Long 按索引范围删除元素
opsForZSet().size(K key) Long 获取有序集合中元素的数量
opsForZSet().rank(K key, Object value) Long 获取元素的升序排名(从0开始)
opsForZSet().reverseRank(K key, Object value) Long 获取元素的降序排名(从0开始)

2.6 通用命令操作API(redisTemplate
API 返回值类型 说明
delete(Object key) Boolean 删除指定key
delete(Collection keys) Long 批量删除多个key
expire(K key, long timeout, TimeUnit unit) Boolean 设置key的过期时间
expireAt(K key, Date date) Boolean 设置key在指定时间戳过期
hasKey(K key) Boolean 判断key是否存在
getExpire(K key) Long 获取key的剩余过期时间(单位:秒)
rename(K oldKey, K newKey) void 重命名key
type(K key) DataType 获取key对应的数据类型
keys(K pattern) Set<K> 获取匹配模式的所有key(生产环境慎用,避免阻塞)

总结

(注:总结采用小3号黑体加粗,段前0.5行、段后0.5行,正文为5号宋体、1.5倍行距)

RedisTemplate 通过分层设计封装了 Redis 全类型操作,核心特点与使用建议如下:

  1. 按数据类型隔离opsForXxx() 系列方法将不同数据类型的操作解耦,API 语义清晰,便于维护;
  2. 原子性保障:所有单命令操作均为 Redis 原生原子操作,天然支持并发场景(如分布式锁、计数器);
  3. 通用命令兜底redisTemplate 直接调用的通用命令,可统一处理 key 的生命周期管理;
  4. 开发优化建议 :使用时需提前配置序列化器(如 Jackson2JsonRedisSerializer)避免乱码,高频操作优先使用带过期时间的方法,避免 key 堆积。
相关推荐
朦胧之8 小时前
AI 编程-老项目改造篇
java·前端·后端
程序猿大帅12 小时前
别再只当调包侠了:用 Spring AI 落地 Function Calling,我被大模型硬生生砸出了三个大坑
java
程序员晓琪13 小时前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly13 小时前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
众少成多积小致巨14 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
东坡白菜14 小时前
破局全栈:前端开发的Java入门实战记录—JPA(2)
java·后端
SimonKing20 小时前
艹,维护AI写的代码,我心态崩了......
java·后端·程序员
用户2986985301420 小时前
Java Word 文档样式进阶:段落与文本背景色设置完全指南
java·后端
dunky21 小时前
Spring 的三级缓存与循环依赖
后端·spring
小bo波1 天前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制