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

两种Redis序列化对比

两种Redis序列化方案对比

方案一:自定义RedisTemplate(自动序列化)

特点:配置一次,自动处理序列化

// SpringDataRedis3ApplicationTests.java
@SpringBootTest
class SpringDataRedis3ApplicationTests {@Autowired RedisTemplate<String, Object> redisTemplate;  // 使用自定义配置的RedisTemplate@Testvoid testSaveUser(){// 直接存储对象,自动序列化redisTemplate.opsForValue().set("user:100", new User("彪哥", 18));// 直接获取对象,自动反序列化User user = (User) redisTemplate.opsForValue().get("user:100");System.out.println("user: " + user);}
}

配置:需要RedisConfig配置类

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(connectionFactory);// 配置序列化器template.setKeySerializer(RedisSerializer.string());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());template.afterPropertiesSet();return template;}
}

方案二:StringRedisTemplate(手动序列化)

特点:手动控制序列化过程

// RedisStringTest.java
@SpringBootTest
class RedisStringTest {@Autowiredprivate StringRedisTemplate stringRedisTemplate;  // 使用StringRedisTemplateprivate static final ObjectMapper mapper = new ObjectMapper();@Testvoid testSaveUser() throws JsonProcessingException {// 1. 创建对象User user = new User("彪爷", 18);// 2. 手动序列化为JSONString json = mapper.writeValueAsString(user);// 3. 存储JSON字符串stringRedisTemplate.opsForValue().set("user:200", json);// 4. 获取JSON字符串String jsonUser = stringRedisTemplate.opsForValue().get("user:200");// 5. 手动反序列化为对象User user1 = mapper.readValue(jsonUser, User.class);System.out.println("user1: " + user1);}
}

两种方案对比

方面方案一(RedisTemplate)方案二(StringRedisTemplate)
配置复杂度需要自定义配置类无需配置,开箱即用
使用复杂度简单,直接存储对象复杂,需要手动序列化
代码量
灵活性低,序列化方式固定高,可以自定义序列化逻辑
性能稍好(自动优化)稍差(手动处理)
调试难(自动序列化)易(可见JSON)

当项目所需序列化极多的时候,就需要手动配置一些序列化避免浪费内存,如上图自动序列化反序列化的过程需要@class:路径来判断反序列化的类型,如果极多的情况下就会极大地浪费内存

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

相关文章:

  • 精确优化长尾关键词以提升SEO效果的战略分析
  • 分析对手网站wordpress制作功能型网站
  • Spring AOP注解配置实战:从概念到代码实现的深度解析(含核心关键词)
  • 【图像算法 - 31】基于深度学习的太阳能板缺陷检测系统:YOLOv12 + UI界面 + 数据集实现
  • 火山方舟 Responses API 实战指南:从概念到「公司尽调 Dossier 生成器」
  • 【推荐系统3】向量召回:i2i召回、u2i召回
  • 网站建设及系统开发wordpress仿微信菜单栏
  • 网站死链接怎么处理网页版浏览器怎么设置
  • 【仿RabbitMQ的发布订阅式消息队列】--- 介绍
  • Frobenius范数:矩阵分析的万能度量尺
  • 做网站 php asp.net jsp学院网站建设实例
  • [论文阅读] 从 5MB 到 1.6GB 数据:Java/Scala/Python 在 Spark 中的性能表现全解析
  • 算法--滑动窗口(一)
  • 新房网站建设公司永和建设集团有限公司网站
  • 【Rust编程:从新手到大师】Rust 环境搭建(详细版)
  • SQL188 每月及截止当月的答题情况
  • 珠海网站专业制作网站开发和运维区别
  • 数据格式 、序列化和反序列化
  • 【Rust编程:从新手到大师】第一个项目Hello,World
  • 【代码随想录算法训练营——Day48】单调栈——42.接雨水、84.柱状图中最大的矩形
  • 架构设计:银行核心系统
  • 手机网站建设推广网站策划书格式
  • Week 22: 深度学习补遗:Transformer+Encoder构建
  • Nacos,什么是Nacos,一文详解
  • 7. Qt 容器迭代器
  • 详解MySQL两种存储引擎MyISAM和InnoDB的优缺点
  • Python + uiautomator2 手机自动化控制教程
  • 黑龙江省城乡建设厅网站注册广告公司名字
  • 杨校老师课堂之C++备赛信奥中STL常用库函数梳理汇总(含样例代码)
  • UU远程深度测评:聚焦游戏与Windows多屏场景,免费实用的远程控制选择