当前位置: 首页 > 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.lryc.cn/news/585546.html

相关文章:

  • c++——浅拷贝和深拷贝、浅赋值和深赋值
  • Django快速入门搭建网站
  • 经典同步问题详解
  • 液冷智算数据中心崛起,AI算力联动PC Farm与云智算开拓新蓝海(二)
  • Apache Cloudberry 向量化实践(三)重塑表达式构建路径:Gandiva 优化实战
  • 2D下的几何变换(C#实现,持续更新)
  • SpringBoot或OpenFeign中 Jackson 配置参数名蛇形、小驼峰、大驼峰、自定义命名
  • SpringCloud之Ribbon
  • BootstrapBlazor与JS互调
  • Semi-Supervised Single-View 3D Reconstruction via Prototype Shape Priors
  • 小智AI模型接入MCP
  • 【一起来学AI大模型】微调技术:LoRA(Low-Rank Adaptation) 的实战应用
  • SQL Server通过CLR连接InfluxDB实现异构数据关联查询技术指南
  • SpringBoot JWT
  • Rust与UE5高效集成实战
  • uniapp制作一个个人页面
  • ffmpeg-api记录
  • UC浏览器PC版自2016年后未再更新不支持vue3
  • 小旺AI截图1.2.1版本上线:新增录屏音频、Mac长截屏
  • Docker高级管理--Dockerfile 镜像制作
  • 手把手一起使用Miniforge3+mamba平替Anaconda(Win10)
  • 机器学习week2-线性回归加强
  • Java的extends通配符
  • netdxf—— CAD c#二次开发之(netDxf 处理 DXF 文件)
  • 和鲸社区深度学习基础训练营2025年关卡2(3)pytorch
  • 利用Claude code,只用文字版系统设计大纲,就能轻松实现系统~
  • 免费应用分发平台的安全漏洞和防护机制是什么?
  • 60 美元玩转 Li-Fi —— 开源 OpenVLC 平台入门(附 BeagleBone Black 驱动简单解析)
  • Windows解决 ping 127.0.0.1 一般故障问题
  • 【Linux网络】深入理解HTTP/HTTPS协议:原理、实现与加密机制全面解析