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

SpringDataRedis入门

目录

SpringDataRedis简单介绍

RedisTemplate工具类

与Jedis相比SpringDataRedis的核心优势

SpringDataRedis快速入门

引入依赖

配置文件

注入RedisTemplate即可使用

SpringDataRedis的序列化方式**

方案一:

存在的问题

方案二:(推荐)

解释:

总结两种方案


SpringDataRedis简单介绍

 

RedisTemplate工具类

SpringDataRedis中提供了RedisTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类中:

与Jedis相比SpringDataRedis的核心优势

  • 简化开发流程

    • 自动连接管理‌:无需编写 jedis.get()/jedis.close() 等样板代码‌
    • 统一 API 模板‌:通过 RedisTemplate 封装不同数据类型的操作(如 opsForList() 操作列表)‌
    • 注解式缓存支持‌:兼容 Spring Cache 注解(如 @Cacheable),实现声明式缓存‌
  • 灵活的序列化机制
    支持自定义序列化策略(如 Jackson2JsonRedisSerializer 存储 JSON 对象),而 Jedis 需手动转换对象与字节数组‌。

  • 生态无缝集成

    • 依赖注入‌:可直接通过 @Autowired 注入 RedisTemplate
    • 事务管理‌:与 Spring 事务框架(如 @Transactional)协同工作‌
    • 高级特性‌:内置支持发布订阅、集群、哨兵模式‌
  • 驱动可拔插性
    可在 Jedis 和 Lettuce(高性能 Netty 驱动)间切换,无需修改业务代码‌

SpringDataRedis快速入门

引入依赖

配置文件

注入RedisTemplate即可使用

SpringDataRedis的序列化方式

默认是采用JDK序列化

方案一:

因此可以创建一个配置类:RedisConfig.class,自定义序列化方式(约定key都为String类型,value可以随意),实现全自动序列化和反序列化。

存在的问题

方案二:(推荐)

解释:

由于StringRedisTemplate内置了针对String类型的序列化器,该序列化器会‌自动将 Java 的 String 转换为字节数组‌(例如 UTF-8 编码)存储到 Redis,读取时‌自动将字节数组还原为 Java 的 String 对象‌,所以存储字符串类型的数据无需手动序列化。

但是存储对象类型需手动序列化:

String json = mapper.writeValueAsString(user);

通过 Jackson 的 ObjectMapper 将 Java 对象 user 转换为 JSON 格式的字符串。 

stringRedisTemplate.opsForValue().set("user:200", json);

仅存储已序列化的字符串‌:StringRedisTemplate 默认使用 StringRedisSerializer,直接将 JSON 字符串以二进制形式写入 Redis(无需二次转换)。

通过这两步实现了职责分离原则,序列化存储两步完全独立。

总结两种方案

方案一容易增加不必要的存储,方案二则需要手动序列化对象,各有优缺点,可自行选择。

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

相关文章:

  • 慕尚花坊项目笔记
  • ADSP-21489用SigmaStudio+(SS+)来做开发的详解六、T的用法
  • 工业通信升级新选择:耐达讯CCLINKIE转Modbus TCP网关
  • Vue 动态类名实战讲解
  • 生物化学(实验流程) PCR : 植物提取RNA 电泳评估RNA纯度
  • leetcode:377. 组合总和 Ⅳ[完全背包]
  • 在mac m1基于ollama运行deepseek r1
  • 静态POD是啥,如何理解,应用场景
  • 千辛万苦3面却倒在性格测试?这太离谱了吧!
  • 第十五章 STL(stack、queue、list、set、map容器使用)
  • 如何将 iPhone 文件传到 Mac?
  • C++11中的std::minmax与std::minmax_element:原理解析与实战
  • macOS 笔记本下 Gemini CLI 客户端网络连接问题诊断与解决方案
  • Android开发封装防抖xxx秒操作
  • 莫兰迪色系工作总结汇报PPT模版分享
  • Java 中使用 Stream 将 List 转换为 Map 实战笔记(生产级版)
  • 用 React Three Fiber 实现 3D 城市模型的扩散光圈特效
  • Android 开发中插桩
  • RK3566/RK3568 Android11 修改selinux模式
  • JAVA后端开发——类命名规范
  • android 的软件盘
  • 五镜头倾斜摄影相机的技术优势与应用原理
  • 影石(insta360)GO3拇指相机格式化后的恢复方法
  • 远程登录docker执行shell报错input is not a terminal问题
  • 宝塔命令Composer 更改数据源不生效
  • php中调用对象的方法可以使用array($object, ‘methodName‘)?
  • BP神经网络对时序数据进行分类
  • SpringBoot项目保证接口幂等的五种方法!
  • Typecho性能优化全攻略:从数据库到PHP的深度调优
  • 线性回归原理推导与应用(十):逻辑回归多分类实战