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 堆积。
相关推荐
Cat_Rocky1 小时前
K8s RBAC认证 简单讲
java·docker·kubernetes
一只IT攻城狮1 小时前
️ Spring Boot 文件上传,防御恶意文件攻击
java·spring boot·web安全
ch.ju1 小时前
Java Programming Chapter 3——Subscript of the array
java·开发语言
雨落在了我的手上1 小时前
初识java(三):运算符
java·开发语言
曲幽1 小时前
让FastAPI Agent真正记住你:聊聊会话记忆与持久化存储的落地实践
redis·python·postgresql·fastapi·web·chat·async·session·ai agent
c++之路1 小时前
装饰器模式(Decorator Pattern)
java·开发语言·装饰器模式
Alson_Code1 小时前
Spring Ai Alibaba
java·人工智能·spring
计算机安禾1 小时前
【c++面向对象编程】第5篇:类与对象(四):赋值运算符重载
java·前端·c++