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 堆积。
相关推荐
Lhappy嘻嘻9 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
伊玛目的门徒10 小时前
试用leetcode之典中典 二数之和问题
java·算法·leetcode
ffqws_10 小时前
Redis 分布式锁:基于 Redisson 的实现与面试高频问答
redis·分布式·面试
懒鸟一枚13 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
我命由我1234514 小时前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
考虑考虑14 小时前
Sentinel安装
java·后端·微服务
凤凰院凶涛QAQ16 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
掘金_答案17 小时前
上线那天,一个 ConcurrentHashMap 差点送走我的 AI 客服——3 天排查 JVM 血泪史
java·后端·架构
猿与禅17 小时前
CosId 分布式 ID 生成器完全教程:从架构原理到生产落地
java·shardingsphere·雪花算法·分布式id·高性能·cosid·号段模式
MindUp17 小时前
企业网盘权限模型解析:多层级访问控制与审计能力选型指南
java·linux·运维