【Redis】RedisTemplate序列化传输数据

news2024/11/16 17:31:18

使用自定义的序列化器

使用RedisTemplate默认的序列化器发送数据,会将key全都当成Object处理,从而按照对象的方式转成json格式发送到服务器,这样会导致两个问题。一是不方便阅读,二是会大大浪费内存。因此,建议自定义RedisTemplate的序列化器,将key按照String方式传输,value按照json方式传输,下面是代码。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        // 创建RedisTemplate<String, Object>对象
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();

        // 设置RedisTemplate的连接工厂
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        // 设置RedisTemplate的序列化器
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();

        // key和hashKey的序列化器采用String
        redisTemplate.setKeySerializer(RedisSerializer.string());
        redisTemplate.setHashKeySerializer(RedisSerializer.string());

        // value和hashValue的序列化器采用jsonRedisSerializer
        redisTemplate.setValueSerializer(jsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jsonRedisSerializer);
        return redisTemplate;
    }
}

使用StringRedisTemplate

上述方法在传输数据时候,存在一个问题。上述方法在传输在redis数据库中时候,会将数据类型也传上去,占用了的很大的内存,如下图所示:

    @Test
    void contextLoads() {
        User u = new User("李斯", 20);
        redisTemplate.opsForValue().set("newName", u);
        System.out.println(redisTemplate.opsForValue().get("newName"));
    }

在这里插入图片描述
解决方案是使用StringRedisTemplate:

 @Autowired
    StringRedisTemplate stringRedisTemplate;

    // json工具
    static final ObjectMapper objectMapper = new ObjectMapper();

    @Test
    void testStringRedisTemplate() throws Exception {
        User u = new User("李斯", 20);
        // 将对象转换为json字符串
        String json = objectMapper.writeValueAsString(u);
        stringRedisTemplate.opsForValue().set("user:200", json);

        // 从redis中取出json字符串
        String result = stringRedisTemplate.opsForValue().get("user:200");
        // 将json字符串转换为对象
        User user = objectMapper.readValue(result, User.class);
        System.out.println(user);
    }

在这里插入图片描述

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

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

相关文章

SQLiteC/C++接口详细介绍(一)

上一篇&#xff1a;SQLiteC/C接口简介 下一篇&#xff1a;SQLiteC/C接口详细介绍&#xff08;二&#xff09; 引言&#xff1a; SQLite C/C 数据库接口是一个流行的SQLite库使用形式&#xff0c;它允许开发者在C和C代码中嵌入 SQLite 基本功能的解决方案。通过 SQLite C/C 数据…

企业内部培训考试系统题库功能开发说明

学练考结合中&#xff0c;练是很关键的一环&#xff0c;将考察学习成功的试题导入企业内部培训考试系统的题库中&#xff0c;既可以作为日常学习后的作业巩固练习&#xff0c;又可以组卷进入正式考试里的试卷里。日常考试前更是可以反复练习题库里的各种试题。 校营宝企业内部…

LLM 构建Data Muti-Agents 赋能数据分析平台的实践之①:数据采集

一、 概述 在推进产业数字化的过程中&#xff0c;数据作为最重要的资源是优化产业管控过程和提升产业数字化水平的基础一环&#xff0c;如何实现数据采集工作的便利化、高效化、智能化是降低数据分析体系运转成本以及推动数据价值挖掘体系的基础手段。随着数字化在产业端的推进…

AXI相关知识点

1、Axcache相关知识点 xilinx 文档Pg059推荐&#xff1a; . Xilinx recommends that master devices drive their AW/RCACHE outputs to 0b0011 to allow the AXI Interconnect core to pack data while performing width conversion. 下面这篇文档对Axcache讲解的非常通俗易…

2024年春招|个人简历范本(精选5篇)

HR浏览一份简历也就25秒左右,如果你连「好简历」都没有,怎么能找到好工作呢? 如果你不懂得如何在简历上展示自己,或者觉得怎么改简历都不出彩,那请你一定仔细读完。 个人求职简历第 1 篇 男 22 本科 AI简历 市场营销 123456789 resume@ai-tools.cn 个人概述 以互联…

数据库--SQL语言-1

练习网站&#xff1a;自学SQL网 Select 查询语法复习 SELECT column, another_column, …FROM mytableWHERE condition AND/OR another_condition AND/OR …; 操作符号&#xff1a; 如果属性是字符串, 我们会用到字符串相关的一些操作符号&#xff0c;其中 LIKE&#xff08…

「CISP题库精讲」CISP题库习题解析精讲5道

前言 本节只要对CISP考试中的5道习题进行详细的讲解,时间比较少,敲多少道,就算多少道,反正全部也就1400多道。 习题部分 第一题 某企业内网中感染了一种依靠移动存储进行传播的特洛伊木马病毒,由于企业部署的杀毒软件,为了解决该病毒在企业内部传播,作为信息化负责人…

C++进阶之路---多态(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、多态的原理 1.虚函数表 // 这里常考一道笔试题&#xff1a;sizeof(Base)是多少&#xff1f; class Base { public:…

Java怎么实现word转PDF?

问题背景 这其实源自于使用ES搜索word、pdf等文档的方案实现过程&#xff0c;出现了只能正确解析pdf却不能解析word内容的错误&#xff0c;于是折中方案何不直接把word转成pdf呢&#xff1f;word转pdf肯定是比pdf转word容易太多了。 实现方案 以下是针对多种Java环境下将Wor…

我用 Python 做了个小仙女代码蹦迪视频

前言 最近在B站上看到一个漂亮的仙女姐姐跳舞视频&#xff0c;循环看了亿遍又亿遍&#xff0c;久久不能离开&#xff01; 看着仙紫小姐姐的蹦迪视频&#xff0c;除了一键三连还能做什么&#xff1f;突发奇想&#xff0c;能不能把小仙女的蹦迪视频转成代码舞呢&#xff1f; 说…

Python 基于 OpenCV 视觉图像处理实战 之 背景知识

Python 基于 OpenCV 视觉图像处理实战 之 背景知识 目录 Python 基于 OpenCV 视觉图像处理实战 之 背景知识 一、简单介绍 二、人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09; 三、OpenCV 四、计算机视觉任务的主要类型 五、计算机视觉是通…

博客系统(SSM)

前端页面http://t.csdnimg.cn/zwKyG以上是之前写过的博客前端页面的内容&#xff0c;下面是通过SSM实现的后端内容。 目录 一.准备工作 1.1数据准备 1.2修改配置版本文件 1.3配置数据库 二.项目公共模块 2.1实体类 2.2操作数据库部分 三.功能开发 3.1博客列表 获取博…

确保电子设备稳定运行:晶振安装的详细检查方法

晶振的安装质量直接影响到电路的稳定性和可靠性&#xff0c;因此&#xff0c;检查晶振安装是否正确是非常重要的。下面&#xff0c;我们将介绍一些检查晶振安装是否正确的方法。 1. 检查晶振引脚的焊接质量 在检查晶振安装时&#xff0c;首先要确保晶振的引脚已经正确且牢固地…

stata中inlist2命令(划分区域的简洁命令)

inlist2 首先在stata命令框中输入ssc install inlist2,replace与传统的inlist命令相比&#xff0c;第一是没有字符串个数限制&#xff0c;第二是不用加引号。 常见的划分区域的stata命令 1.最原始的做法 gen area1 if province"北京市"|province"天津市"…

PolarDN的MISC题目:01,0和255详细过程

一、0和255 题目给了俩个文件&#xff0c;一个.txt,一个.py .txt文件中包含0和255 一个字节有八位&#xff0c;每一位只能储存1或0&#xff0c;计算机只懂二进制&#xff0c;所以就是2的八次方&#xff0c;又计算机规定从0开始计数&#xff0c;所以是0至255 考虑用编码转换工…

美团发布VisionLLaMA,为视觉生成和理解提供新基线

在人工智能领域&#xff0c;统一的模型架构对于简化模型设计、提高模型效率以及促进跨领域应用具有重要意义。近年来&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;在处理文本输入方面取得了显著的进展&#xff0c;其中基于变换器&#xff08;Tra…

Leetcode笔记——二叉树的迭代遍历

中序遍历&#xff1a; 定义一个 保存中间量的栈 和一个 结果数组 1. 模板写法 注释版&#xff1a; 背诵版&#xff1a; 前序遍历 1. 中 右 左 的顺序遍历 2. 模板写法&#xff0c;按中 左 右 的顺序遍历 后序遍历 1. 模板写法&#xff0c;按左 右 中 的顺序遍历 注释版&am…

Anaconda 的一些配置

Anaconda 安装及修改环境默认位置 https://blog.csdn.net/qq_54562136/article/details/128932352 最重要的一步&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;改文件夹权限 Anaconda创建、激活、退出、删除虚拟环境 修改pip install 默认安装路径

鸿蒙Harmony应用开发—ArkTS声明式开发(模态转场设置:全屏模态转场)

通过bindContentCover属性为组件绑定全屏模态页面&#xff0c;在组件插入和删除时可通过设置转场参数ModalTransition显示过渡动效。 说明&#xff1a; 从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 不支持横竖屏切换。…

智能合约开发基础知识:最小信任机制、智能合约、EVM

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 专栏的前面几篇详细了介绍了区块链的核心基础知识 有兴趣学习的小伙伴可以看看http://t.csdnimg.cn/fCD5E关于区块…