当前位置: 首页 > news >正文

【Redis】StringRedisTemplate 和 RedisTemplate 的区别

StringRedisTemplateRedisTemplate 是 Spring Data Redis 提供的两种用于操作 Redis 的模板类,它们的核心区别在于 序列化方式操作的数据类型。以下是两者的主要区别和使用建议:


✅ 1. 数据类型支持

类名支持的数据类型说明
RedisTemplate支持所有 Redis 数据结构(如 String、Hash、List、Set、ZSet)可以操作任意 Java 对象,但需要手动配置序列化方式
StringRedisTemplate主要用于操作字符串类型已经默认使用 StringSerializer,适合处理字符串键值对

✅ 2. 序列化方式

属性RedisTemplateStringRedisTemplate
Key 序列化器JdkSerializationRedisSerializer(默认)StringRedisSerializer
Value 序列化器JdkSerializationRedisSerializer(默认)StringRedisSerializer
HashKey 序列化器JdkSerializationRedisSerializerStringRedisSerializer
HashValue 序列化器JdkSerializationRedisSerializerStringRedisSerializer

⚠️ 使用 RedisTemplate 存储字符串时,如果不自定义序列化器,会以 JDK 序列化方式存储,导致在 Redis 客户端看到的是乱码。


✅ 3. 适用场景

场景推荐使用
操作纯字符串(如 token、简单缓存)StringRedisTemplate
操作复杂对象或多种数据结构(如 List、Set、Hash)RedisTemplate(需配置合适的序列化器,如 GenericJackson2JsonRedisSerializerJackson2JsonRedisSerializer

✅ 4. 示例对比

使用 StringRedisTemplate

@Autowired
private StringRedisTemplate stringRedisTemplate;// 存字符串
stringRedisTemplate.opsForValue().set("key", "value");// 取字符串
String value = stringRedisTemplate.opsForValue().get("key");

使用 RedisTemplate

@Autowired
private RedisTemplate<String, Object> redisTemplate;// 存对象
redisTemplate.opsForValue().set("user:1", user);// 取对象
User user = (User) redisTemplate.opsForValue().get("user:1");

✅ 建议

  • 如果你只操作字符串,推荐使用 StringRedisTemplate,它更简单、直观。
  • 如果你需要操作复杂对象或多种数据结构,请使用 RedisTemplate,并建议配置统一的 JSON 序列化器(如 GenericJackson2JsonRedisSerializer),避免出现序列化不一致的问题。

🔧 示例:配置 RedisTemplate 使用 JSON 序列化器

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());return template;
}

这样可以确保你在操作对象时,Redis 中保存的是可读性较好的 JSON 格式。

http://www.dtcms.com/a/264958.html

相关文章:

  • Python 数据分析与可视化 Day 14 - 建模复盘 + 多模型评估对比(逻辑回归 vs 决策树)
  • JavaEE==网站开发
  • Liunx 安装 MySQL 8.0
  • Selenium使用教程-爬虫版(超详细)
  • 数学建模_图论
  • 重塑智能体决策路径:深入理解 ReAct 框架
  • 【前端进阶】【实战】【性能优化】前端开发中的事件监听与DOM操作优化实践
  • Linux基本命令篇 —— whereis命令
  • 利用 Claude Opus 4 自动化 GitHub 工作流:从安装到实战详解
  • 新版本AI数字人全能管家,即将推出,还是开源免费。
  • [附源码+数据库+毕业论文+答辩PPT]基于Spring+MyBatis+MySQL+Maven+vue实现的中小型企业财务管理系统,推荐!
  • 多个单片机简单通讯框架
  • GO Web 框架 Gin 完全解析与实践
  • 数据结构与算法 第三章 栈和队列
  • 第一章 快速入门
  • DPI深度检索原理和架构
  • 人脸活体识别3:C/C++实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)
  • 创客匠人解构知识付费爆单密码:产品力打造与 IP 变现的深度耦合
  • Kafka高级特性深度解析:构建企业级流处理平台的核心技术
  • IP地理定位技术综述:理论、方法与应用创新(三)
  • pdf 合并 python实现(已解决)
  • Qt Quick 与 QML(五)qml中的布局
  • 基于图神经网络的ALS候选药物预测模型设计与实现
  • Point Transformer V3(PTv3)
  • AI:什么是Agent
  • mysql查看数据库
  • 自主/智能的本质内涵及其相互关系
  • QT6 源(145)模型视图架构里的表格视图 QTableView 篇一:先学习属性,再 public 权限的成员函数
  • 胡兵全新时尚生活频道上线,开启多维生活美学新篇
  • 胡兵创立时尚生活频道《HUBING SELECTS胡兵智选》担任主编深耕智选生活