SpringDataRedis 操作 redis
Spring Data Redis 完全按照 Redis 的数据类型做了模块化封装和原生命令一一对应。下面我按「通用Key操作 5大核心数据类型」分类整理每个方法都标注等价的 Redis 原生命令和可直接运行的代码示例方便你对照记忆。一、通用 Key 操作所有数据类型通用这部分是所有数据类型共用的基础操作直接通过redisTemplate调用不需要先获取 ops 操作器。Java 方法功能说明等价 Redis 原生命令代码示例hasKey(key)判断 key 是否存在EXISTS keyredisTemplate.hasKey(demo:name)delete(key)删除指定 keyDEL keyredisTemplate.delete(demo:name)expire(key, 时间, 单位)给 key 设置过期时间EXPIRE key 秒数redisTemplate.expire(demo:name, 60, TimeUnit.SECONDS)getExpire(key)获取 key 剩余过期时间秒TTL keyredisTemplate.getExpire(demo:name)persist(key)移除 key 的过期时间永久保存PERSIST keyredisTemplate.persist(demo:name)rename(oldKey, newKey)修改 key 名称RENAME oldKey newKeyredisTemplate.rename(demo:name, demo:username)type(key)返回 key 存储的数据类型TYPE keyredisTemplate.type(demo:name)二、字符串类型 String →opsForValue()对应 Redis 最基础的 String 类型支持普通字符串、数字、序列化对象存储是开发中最常用的类型。操作入口redisTemplate.opsForValue()Java 方法功能说明等价 Redis 原生命令代码示例set(key, value)普通存入键值对SET key valueops.set(demo:name, 张三)set(key, value, 时间, 单位)存入并设置过期时间SET key value EX 秒数/SETEXops.set(demo:name, 张三, 60, TimeUnit.SECONDS)setIfAbsent(key, value)key 不存在时才存入分布式锁核心SETNX key valueops.setIfAbsent(lock:order, 1, 30, TimeUnit.SECONDS)setIfPresent(key, value)key 存在时才存入SET key value XXops.setIfPresent(demo:name, 李四)get(key)获取 key 对应的值【key 不存在 → 返回 null】GET keyops.get(demo:name)getAndSet(key, value)获取旧值并设置新值GETSET key valueops.getAndSet(demo:name, 王五)increment(key, 步长)数值原子递增用于计数INCRBY key 步长ops.increment(demo:viewCount, 1)decrement(key, 步长)数值原子递减DECRBY key 步长ops.decrement(demo:stock, 1)multiSet(Map)批量设置多个键值对MSETops.multiSet(Map.of(k1,v1,k2,v2))multiGet(Collection)批量获取多个 key 的值MGETops.multiGet(List.of(k1, k2))小提示increment是原子操作非常适合做点赞数、浏览量、库存扣减等计数场景。三、哈希类型 Hash →opsForHash()对应 Redis Hash 类型类似 Java 的 Map适合存储对象的字段属性不用序列化整个对象可单独修改单个字段。操作入口redisTemplate.opsForHash()Java 方法功能说明等价 Redis 原生命令代码示例put(key, field, value)存入单个字段HSET key field valueops.put(demo:user, name, 张三)putAll(key, Map)批量存入多个字段HMSET key field1 value1...ops.putAll(demo:user, Map.of(age,20,gender,男))get(key, field)获取单个字段的值HGET key fieldops.get(demo:user, name)entries(key)获取所有字段和值HGETALL keyops.entries(demo:user)keys(key)获取所有字段名HKEYS keyops.keys(demo:user)values(key)获取所有字段值HVALS keyops.values(demo:user)delete(key, fields...)删除指定字段HDEL key field1 field2ops.delete(demo:user, age, gender)hasKey(key, field)判断字段是否存在HEXISTS key fieldops.hasKey(demo:user, name)increment(key, field, 步长)指定字段数值递增HINCRBY key field 步长ops.increment(demo:user, score, 5)size(key)获取字段数量HLEN keyops.size(demo:user)四、列表类型 List →opsForList()对应 Redis List 类型有序、可重复支持两端插入弹出适合实现简单队列、栈、最新列表等场景。操作入口redisTemplate.opsForList()Java 方法功能说明等价 Redis 原生命令代码示例leftPush(key, value)从列表左侧头部插入元素LPUSH key valueops.leftPush(demo:msgList, 消息1)rightPush(key, value)从列表右侧尾部插入元素RPUSH key valueops.rightPush(demo:msgList, 消息2)leftPop(key)从左侧弹出一个元素LPOP keyops.leftPop(demo:msgList)rightPop(key)从右侧弹出一个元素RPOP keyops.rightPop(demo:msgList)range(key, start, end)按索引范围获取元素0到-1是全部LRANGE key start endops.range(demo:msgList, 0, -1)size(key)获取列表长度LLEN keyops.size(demo:msgList)index(key, index)获取指定索引位置的元素LINDEX key indexops.index(demo:msgList, 0)remove(key, count, value)删除指定个数的匹配元素LREM key count valueops.remove(demo:msgList, 1, 消息1)trim(key, start, end)截取列表保留指定范围LTRIM key start endops.trim(demo:msgList, 0, 9)常用场景左进右出 队列先进先出左进左出 栈先进后出trim常用来保留最新的N条记录。五、集合类型 Set →opsForSet()对应 Redis Set 类型无序、不可重复支持交集、并集、差集运算适合去重、标签、共同好友等场景。操作入口redisTemplate.opsForSet()Java 方法功能说明等价 Redis 原生命令代码示例add(key, values...)添加一个或多个元素SADD key v1 v2ops.add(demo:tags, Java, Spring, Redis)remove(key, values...)删除一个或多个元素SREM key v1 v2ops.remove(demo:tags, Redis)isMember(key, value)判断元素是否在集合中SISMEMBER key valueops.isMember(demo:tags, Java)members(key)获取集合中所有元素SMEMBERS keyops.members(demo:tags)size(key)获取集合元素个数SCARD keyops.size(demo:tags)intersect(key1, key2)两个集合的交集SINTER key1 key2ops.intersect(user1:tags, user2:tags)union(key1, key2)两个集合的并集SUNION key1 key2ops.union(user1:tags, user2:tags)difference(key1, key2)两个集合的差集SDIFF key1 key2ops.difference(user1:tags, user2:tags)randomMember(key)随机获取一个元素SRANDMEMBER keyops.randomMember(demo:tags)六、有序集合类型 ZSet →opsForZSet()对应 Redis ZSet 类型不可重复、每个元素带一个分数score按分数自动排序是实现排行榜、热度排名的首选。操作入口redisTemplate.opsForZSet()Java 方法功能说明等价 Redis 原生命令代码示例add(key, value, score)添加元素分数ZADD key score valueops.add(demo:rank, 张三, 95)remove(key, values...)删除元素ZREM key v1 v2ops.remove(demo:rank, 张三)range(key, start, end)按索引升序获取元素ZRANGE key start endops.range(demo:rank, 0, -1)reverseRange(key, start, end)按索引降序获取元素ZREVRANGE key start endops.reverseRange(demo:rank, 0, 9)rangeByScore(key, min, max)按分数范围升序获取ZRANGEBYSCORE key min maxops.rangeByScore(demo:rank, 60, 100)rank(key, value)获取元素升序排名从0开始ZRANK key valueops.rank(demo:rank, 张三)reverseRank(key, value)获取元素降序排名ZREVRANK key valueops.reverseRank(demo:rank, 张三)incrementScore(key, value, delta)增加元素的分数ZINCRBY key delta valueops.incrementScore(demo:rank, 张三, 5)size(key)获取集合元素个数ZCARD keyops.size(demo:rank)开发必知注意点序列化问题你代码中用的RedisTemplateString, Object默认是 JDK 序列化存入 Redis 后是二进制乱码可读性很差。实际开发中建议配置 Jackson JSON 序列化器把对象存成 JSON 格式兼顾可读性和自动转换。StringRedisTemplate如果只操作字符串优先用StringRedisTemplate它默认就是字符串序列化不需要额外配置是业务开发中更常用的版本。命名规范推荐用业务模块:功能:id的冒号分隔命名比如user:info:1001在 Redis 可视化工具中会自动分层显示结构更清晰。

相关新闻

深耕数智基建 赋能 AI 落地|光环新网荣获 AI 数字基础设施最佳实践

深耕数智基建 赋能 AI 落地|光环新网荣获 AI 数字基础设施最佳实践

2026 年 8 月 22 日,第五届中国数据 AI 价值峰会于北京成功举办。会议以“数据驱动AI”为主题,聚焦数据要素价值释放与 AI 工程化落地,并于同期举行了数据 AI创新标杆案例颁奖活动。光环新网凭借在数字基础设施领域的持续深耕建设与AI数智落地…

2026/11/6 9:09:55 阅读更多 →
计算机毕设选题:融合 AI 分析与文化图谱的非遗平台功能设计

计算机毕设选题:融合 AI 分析与文化图谱的非遗平台功能设计

一、AI 与非遗文化平台的结合 传统文化网站通常以文章和图片展示为主,内容之间缺少关联,用户也很难快速理解项目的历史演变与文化价值。“承遗”平台增加 AI 项目分析、个性化推荐、文化图谱和智能问答,让用户能够从时间、技艺、地域、人物及…

2026/10/27 19:50:26 阅读更多 →
SpringBoot+Vue外卖系统实战:架构设计与核心技术解析

SpringBoot+Vue外卖系统实战:架构设计与核心技术解析

简介:这是一套面向计算机专业本科生课程设计与毕业设计的全栈外卖点餐系统实战资源,聚焦SpringBoot后端开发与Vue前端工程化实践,解决中小型餐饮商户线上订单管理与用户便捷点餐的双重需求。压缩包共638个文件,含121个Java后端业务…

2026/11/9 4:04:32 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻