Redis序列化设置以及jetcache连接Redis序列化的设置

news2024/7/6 20:34:20

1、问题

问题:我在使用jetchche进行连接redis的时候,存入redis的value一直使用的是redis默认的序列化方式,是使用的jdk序列化。当我使用jetcache向redis存入一个对象

 存入redis的结果:

 这是使用jdk序列化的结果。

但是我记得使用redis的时候可以更改序列化方式为json序列化,如果使用json序列化的结果就是这样的:

 我想把jetcache的序列化方式也改成这种可读性好的。

2、Redis序列化的设置;

当我们使用springDataRedis依赖直接连接redis的时候我们默认使用的也是jdk序列化,此时我们存入这个user对象的结果就和这个是一样的。

这种序列化的方式可读性比较差。

更改序列化的方式:

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){
        // 创建RedisTemplate对象
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        // 设置连接工厂
        template.setConnectionFactory(connectionFactory);
        // 创建JSON序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = 
                                        new GenericJackson2JsonRedisSerializer();
        // 设置Key的序列化
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());
        // 设置Value的序列化
        template.setValueSerializer(jsonRedisSerializer);
        template.setHashValueSerializer(jsonRedisSerializer);
        // 返回
        return template;
    }
}

此时我们就可以进行接送序列化存入redis的就是这样的:

 这样存入redis的时候因为前面会加上一串这个对象的信息,这样也额外占用了空间。

如果我们需要解决占用的这部分空间,我们可以手动进行JSON序列化,然后同一使用String序列化器。

@Autowired
private StringRedisTemplate stringRedisTemplate;
// JSON序列化工具
private static final ObjectMapper mapper = new ObjectMapper();

@Test
void testSaveUser() throws JsonProcessingException {
    // 创建对象
    User user = new User("虎哥", 21);
    // 手动序列化
    String json = mapper.writeValueAsString(user);
    // 写入数据
    stringRedisTemplate.opsForValue().set("user:200", json);

    // 获取数据
    String jsonUser = stringRedisTemplate.opsForValue().get("user:200");
    // 手动反序列化
    User user1 = mapper.readValue(jsonUser, User.class);
    System.out.println("user1 = " + user1);
}

此时,存入的json字符串就没有了前面类的信息。

3、jetcache序列化设置

我们使用jetcache使用redis作为远程缓存时,默认序列化工具也是使用的JDK序列化,jetcahce提供的配置文件中有这么一项:keyConvertor,这个配置可以指定为alibaba的fastjson的序列化工具,但是这个修改的时key的序列化,而不是value。我们还是达不到提高可读性的效果。这是官方提供的jetcache的配置:

jetcache:
  statIntervalMinutes: 15
  areaInCacheName: false
  local:
    default:
      type: linkedhashmap #other choose:caffeine
      keyConvertor: fastjson2 #other choose:fastjson/jackson
      limit: 100
  remote:
    default:
      type: redis
      keyConvertor: fastjson2 #other choose:fastjson/jackson
      broadcastChannel: projectA
      valueEncoder: java #other choose:kryo/kryo5
      valueDecoder: java #other choose:kryo/kryo5
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      host: ${redis.host}
      port: ${redis.port}

我们可以看到有个配置叫做 valueEncoder和valueDecoder。这个配置才是真正的value的序列化工具。这个配置jetcache给我们提供了三个选择,分别是:java(jdk序列化),kryo和kryo5。并不能改成json序列化。

总结:

单独使用redis的时候可以改序列化工具为json序列化,但是更推荐使用手动序列化然后直接存String,这样更省空间。如果使用jetcache的时候只能改为jdk,kryo序列化工具,暂时不支持使用json序列化工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

密码学期末复习(按考点整理,超详细!!!)

复习目录&#xff09; 题型第一章密码算法的安全性分类密码分析的难易程度凯撒密码加密原理古典密码中仿射变换的解密变换 第二章流密码的组成和特点流密码的基本思想 第三章分组密码的CBC工作模式&#xff0c;以及该模式的加密示意图AES中字节求逆雪崩效应分组密码的安全设计原…

让HR眼前一亮:30个APP项目软件测试经验,点燃你的简历

在求职过程中&#xff0c;我们都希望自己的简历能够吸引面试官的眼球&#xff0c;从而获得更多的面试机会。作为一名软件测试人员&#xff0c;丰富的实战经验是让自己脱颖而出的关键之一。 在我多年从事APP项目软件测试的工作中&#xff0c;我积累了大量的实践经验&#xff0c…

Java 之 String、StringBuffer与StringBuilder 区别

String String 是被 final 修饰的类&#xff0c;不能被继承&#xff1b;String实现了 Serializable 和Comparable接口&#xff0c;表示String支持序列化和可以比较大小&#xff1b;String底层是通过char类型的数据实现的&#xff0c;并且被final修饰&#xff0c;所以字符串的值…

大数据5--spark

1.Spark 定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎。 Spark 是什么 Spark 最早源于一篇论文 Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing&#xff0c; 该论文是由加州大学柏克莱…

vue3中其他的变化

1.全局API的转移 Vue 2.x 有许多全局 API 和配置。 - 例如&#xff1a;注册全局组件、注册全局指令等。 //注册全局组件 Vue.component(MyButton, {data: () > ({count: 0}),template: <button click"count">Clicked {{ count }} times.</button> …

微信小程序+wx.connectSocket客服问答

项目需求&#xff0c;记录一下&#xff1a; 1.要求websocket实时返回会话结果 我项目这边是后端一次返回一个字&#xff0c;–finish–结束&#xff0c;所以实现方法是每获取到数据时就setData一次&#xff0c;直到获取到的数据为finish&#xff0c;停止setData 后端返回结果…

Banana Pi BPI-Centi-S3 使用MicroPython编程显示JPG图片

BPI-Centi-S3是我们新推出的一款板载1.9英寸彩屏的小尺寸ESP32-S3开发板&#xff01; BPI-Centi-S3 banana-pi wiki BPI-Centi-S3 bpi-steam wiki 1 关键特性 ESP32-S3&#xff0c;Xtensa 32 bit LX72M PSRAM , 8M FLASH2.4G WIFI &#xff0c;Bluetooth 5 &#xff0c;Blue…

Windows下安装使用Kafka(使用Kafka内置的ZooKeeper)

Windows下安装使用Kafka(使用Kafka内置的ZooKeeper) Kafka2.8版本才开始自带了Zookeeper&#xff0c;所以注意下版本 kafka官网&#xff1a;https://kafka.apache.org kafka配置快速入门&#xff1a;https://kafka.apache.org/quickstart kafka下载页面&#xff1a;https:/…

找出1-1000中的所有完美数

再次练习查找完美数&#xff0c;找出 1-1000 中的所有完美数。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 地址&#xff1a;https://l…

【LeetCode】剑指 Offer 62. 圆圈中最后剩下的数字(约瑟夫环问题) p300 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/ 1. 题目介绍&#xff08;62. 圆圈中最后剩下的数字&#xff09; 0,1,,n-1 这n个数字排成一个圆圈&#xff0c;从数字0开始&#xff0c;每次从这个圆圈里删除第m个数字&a…

人工标注或成过去式?SSA语义分割框架、SSA-engine自动类别标注引擎,大幅提升细粒度语义标注效率

推荐语 4月5日&#xff0c;Meta发布 Segment Anything 模型和 SA-1B 数据集&#xff0c;引发CV届“地震”&#xff0c;其凭借一己之力&#xff0c;成功改写了物体检测、数据标注、图像分割等任务的游戏规则。 复旦大学ZVG实验室团队基于此最新开源了SSA语义分割框架和SSA-engin…

javaEE初阶 — Servlet API 详解

文章目录 HttpServlet1 Servlet 的生命周期2 代码示例3 使用 postman 构造请求4 使用 ajax 构造请求 HttpServletRequest1 代码示例 前端如何给后端传参1 通过 GET 里的 query string 传参2 通过 POST 借助 form 表单传参3 通过 json 格式传参 HttpServletResponse1 代码示例1.…

ChatGPT会取代RPA?ta自己可不是这么说的!

先说一个AI热知识&#xff1a;ChatGPT 的推出在科技界引发了一场狂潮。 聊天机器人ChatGPT以及其背后的AI大模型GPT&#xff0c;在2023年引爆全球。GPT 全称为 Generative Pre-trained Transformer&#xff0c;是一种使用人工神经网络的深度学习技术&#xff0c;能够使机器像人…

Transformer and Self-attention

一谈到 NLP&#xff0c;大家都听说过 Transformer&#xff0c; Self-attention 这些词汇&#xff0c;以及 Attension is all you need 这篇论文。 大家可能多多少少看过这类博客&#xff0c;对这些概念有一些了解&#xff0c;什么 QKV呀&#xff0c; encoder&#xff0c; decod…

贪心-刷杂技的牛

题意 农民约翰的 N 头奶牛&#xff08;编号为 1..N&#xff09;计划逃跑并加入马戏团&#xff0c;为此它们决定练习表演杂技。 奶牛们不是非常有创意&#xff0c;只提出了一个杂技表演&#xff1a; 叠罗汉&#xff0c;表演时&#xff0c;奶牛们站在彼此的身上&#xff0c;形成一…

Revit中如何绘制轴线?CAD图纸转轴网操作

一、如何用revit来制作这么一个简单的轴线呢? 01 、新建项目 绘制轴线&#xff0c;首先新建项目建筑样板 02 、轴线快捷键 绘制轴线的快捷键需要牢记&#xff0c;因为经常使用GR 03 、编辑轴线类型 当你画好第一条轴线&#xff0c;需要对轴线类型属性进行调节&#xff0c;一般…

基于vivado(语言Verilog)的FPGA学习(5)——跨时钟处理

基于vivado&#xff08;语言Verilog&#xff09;的FPGA学习&#xff08;5&#xff09;——跨时钟处理 1. 为什么要解决跨时钟处理问题 慢时钟到快时钟一般都不需要处理&#xff0c;关键需要解决从快时钟到慢时钟的问题&#xff0c;因为可能会漏信号或者失真&#xff0c;比如&…

基于HTML5智慧监所三维可视化安防管控系统

前言 物联网技术的发展使云计算技术得到了迅猛的发展及广泛的应用&#xff0c;智能体系的创建已经成为监狱发展的必然趋势。 智慧监狱的创建、智能化管理的推行是监狱管理的创新&#xff0c;也是监狱整体工作水平提升的具体体现。 建设背景 近年来&#xff0c;司法部不断加大…

jumpserver设置密码强度

1、点击系统设置 – 点击安全设置 2、设置密码强弱规则

【SVN】window SVN安装使用教程(服务器4.3.4版本/客户端1.11.0版本)

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…