StringRedisTemplate和RedisTemplate的区别

news2024/11/25 9:54:07

StringRedisTemplate和RedisTemplate的区别

springboot提供了两种redis访问工具类StringRedisTemplate和RedisTemplate,为什么spring官方会提供两种不同redis访问工具呢?两者主要的的区别在于redis的key和value的序列化方式不同,并且StringRedisTemplate继承RedisTemplate并修改其序列化方式。

RedisTemplate默认使用JdkSerializationRedisSerializer序列化对象,序列化成byte[]
StringRedisTemplate默认使用StringRedisSerializer序列化对象,序列化成String

Spring提供了几种redis序列化方式有:
  • GenericToStringSerializer: 可以将任何对象泛化为字符串并序列化
  • Jackson2JsonRedisSerializer: 跟JacksonJsonRedisSerializer实际上是一样的
  • JacksonJsonRedisSerializer: 序列化object对象为json字符串
  • JdkSerializationRedisSerializer: 序列化java对象
  • StringRedisSerializer: 简单的字符串序列化
性能比较
  • JdkSerializationRedisSerializer序列化后长度最小,Jackson2JsonRedisSerializer效率最高。
  • 如果综合考虑效率和可读性,牺牲部分空间,推荐key使用StringRedisSerializer,保持的key简明易读;value可以使用Jackson2JsonRedisSerializer
  • 如果空间比较敏感,效率要求不高,推荐key使用StringRedisSerializer,保持的key简明易读;value可以使用JdkSerializationRedisSerializer

一、StringRedisTemplate

StringRedisTemplate主要用于存储字符串,会redis的key和value都序列化成String字符串存储到redis中。
在这里插入图片描述

二、RedisTemplate

RedisTemplate可以存储对象,默认使用JdkSerializationRedisSerializer序列化对象,序列化成byte[],导致数据没有可读性。
在这里插入图片描述
可以看出,在redis查询工具里是16进制数据或者是乱码的无法查看。

三、自定义序列化

针对RedisTemplate进行自定义序列化规则,redis中key使用StringRedisSerializer进行序列化、value则使用FastJsonRedisSerializer进行序列化。

@Configuration
public class RedisConfig {

    @Bean(name = "redisTemplate")
    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class);
        // 建议使用这种方式,小范围指定白名单
        ParserConfig.getGlobalInstance().addAccept("com.xxxxx.");
        // 设置键(key)的序列化采用StringRedisSerializer。
        redisTemplate.setKeySerializer(new org.springframework.data.redis.serializer.StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new org.springframework.data.redis.serializer.StringRedisSerializer());
        // 设置值(value)的序列化采用FastJsonRedisSerializer。
        redisTemplate.setValueSerializer(fastJsonRedisSerializer);
        redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);
        return redisTemplate;
    }
}

注意:在存储字符串的时候,StringRedisSerializer则会默认去掉字符串两边的引号,而FastJsonRedisSerializer则两遍引号不会去掉。
如下所示

redisTemplate.opsForSet().add("ownStringRedisSerializer","234234234");
stringRedisTemplate.opsForSet().add("ownStringRedisSerializer","23423");

在这里插入图片描述

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

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

相关文章

手把手教你制作AI孙燕姿,让你的抖音视频火遍全网!

最近“AI孙燕姿”翻唱”的《发如雪》《爱在西元前》等歌曲在B站、抖音、快手等短视频平台爆火&#xff0c;截止到发稿前抖音的播放量已经超1700万。 目前AI孙燕姿制作教程资料较少&#xff0c;网上搜到几个都是使用开源项目Sovits来训练模型&#xff0c;使用门槛较高。 本文以…

云时通 X 九毛九 | SRM系统助力连锁餐饮行业高效管理供应链

餐饮行业作为第三产业中的传统服务性行业之一&#xff0c;始终保持旺盛的发展势头&#xff0c;随着时代的进步&#xff0c;现代餐饮企业更多以连锁业态发展&#xff0c;其特点是多种形式相结合而生&#xff0c;将新颖的就餐空间与潮流文化和传统的经典美味互相融合&#xff0c;…

​数据库原理及应用上机(实验五 SQL的数据更新)

✨作者&#xff1a;命运之光 ✨专栏&#xff1a;数据库原理及应用上机实验 &#x1f353;&#x1f353;前言&#xff1a; 数据库原理及应用上机实验报告的一个简单整理后期还会不断完善&#x1f353;&#x1f353; ✨一、实验目的和要求 掌握SQL数据插入、修改和删除语句的一…

多大一口气能将汽车吹上天,你算出来了吗?

多大一口气能将汽车吹上天&#xff0c;你算出来了吗?起来了解其中的原理&#xff0c;手把手教你如何计算汽车起飞所需的风速! 空气同时通过机翼上表面和下表面时&#xff0c;会在机翼上下方形成不同流速&#xff0c;空气通过机翼上表面时流速大&#xff0c;压强较小;通过下表面…

设计模式之【中介者模式】,多对多关系降级为一对多关系的利器

文章目录 一、什么是中介者模式1、中介者模式的优势2、中介者模式的缺点3、中介者模式的应用场景4、中介者模式的四大角色5、观察者模式和中介模式的区别 二、实例1、中介者模式的一般写法2、租房中介案例3、智能家具案例 三、源码中的中介者模式1、Timer 一、什么是中介者模式…

Spring MVC 中的视图解析器是什么?如何配置它

当我们使用 Spring MVC 框架进行 Web 开发时&#xff0c;视图解析器&#xff08;View Resolver&#xff09;是一个非常重要的组件&#xff0c;它负责将控制器&#xff08;Controller&#xff09;所产生的逻辑视图名称&#xff08;Logical View Name&#xff09;转换成实际的视图…

Go语言环境搭建(内附网P下载地址)

一、Golang语言的官网 首先我们登录Golang的官方网站&#xff1a;https://golang.org/ 因为Google和中国的关系&#xff0c;直接登录Golang的官网&#xff0c;需要翻墙。 当然你也可以登录Golang的国内网站&#xff1a;https://golang.google.cn/ 二、下载 在Mac、Windows和L…

2023贵工程团体程序设计赛--赛后总结

本次比赛共27支队伍参加&#xff0c;总计135人&#xff0c;其中一支队伍为出题组&#xff08;不计入最后排名&#xff09;。实际参赛130人&#xff0c;5人缺考&#xff08;1人未加入题集&#xff09;。 1.人员分布 信息工程学院&#xff1a;22计科2支队伍&#xff0c;22软件6…

Python|Pyppeteer快速定位select下拉框(10)

前言 本文是该专栏的第10篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 一般情况下,选中某个select下拉框,会出现一堆可选信息。如下图中的Country列表,点击列表会出现多个国家选择,如下图所示。 比如说,现在需要从这个Country列表中,快速选中某个国家…

2023新版Spring6全新讲解-SpringFramework介绍

SpringFramework介绍 一、官网地址阅读 https://spring.io/ 二、Spring的发展历史 三、Spring的概述 一个Java应用层程序&#xff0c;是由许多个类组成的&#xff0c;这些类之间必然存在依赖关系&#xff0c;当项目越来越大&#xff0c;依赖关系越来越复杂&#xff0c;需要一…

Jmeter连接不同类型数据库语法

Jmeter连接不同类型数据库语法 添加&#xff1a;配置原件->JDBC Connection Configuration variable name for created pool&#xff1a;自定义一个线程池变量名database Connection Configuration database URL: 填写数据库ip、端口、dbname等&#xff0c;但是不同数据库…

【UE4】从零开始制作战斗机(下:喷射尾焰随推进速度变化)

上一篇&#xff1a; 【UE4】从零开始制作战斗机&#xff08;中&#xff1a;飞机操控逻辑&#xff09;_Zhichao_97的博客-CSDN博客 效果 步骤 1. 新建一个Niagara发射器 选择新发射器 选择空模板 命名为“ThrusterEmitter” 2. 打开“ThrusterEmitter”&#xff0c;选中“发射…

真题详解(快速排序)-软件设计(八十一)

原创 真题详解(语法分析输入记号流)-软件设计&#xff08;八十)https://blog.csdn.net/ke1ying/article/details/130791934 COCOMOII基于____进行估算&#xff1f; 答案&#xff1a;源代码行数 2、0~7有8个索引&#xff0c;0~4是5个直接索引&#xff0c;磁盘块数据大小1kb字节…

Spring Cloud(Kilburn 2022.0.2版本)系列教程(二) 服务消费者(RestTemplate+Loadbalancer)

Spring Cloud(Kilburn 2022.0.2版本)系列教程(二) 服务消费者(RestTemplate+Loadbalancer) 一、服务消费 可以参考上节eurekaClientConsumer。 在启动类中,我们已经注入了一个restTemplate了,并且在上面增加了@LoadBalanced注解,这个是导入的org.springframework.cloud.cl…

001. 为啥用IDEA反编译没有擦除泛型?

你好&#xff0c;我是YourBatman&#xff1a;一个俗人&#xff0c;贪财好色。 &#x1f4da;前言 Java泛型是进阶高级开发必备技能之一&#xff0c;了解实现泛型的基本原理&#xff0c;有助于写出更优质的代码。 众所周知&#xff0c;Java是伪泛型&#xff0c;是通过类型擦除…

Redis哨兵集群搭建及其原理

Redis哨兵集群搭建及其原理 1.Redis哨兵1.1.哨兵原理1.1.1.集群结构和作用1.1.2.集群监控原理1.1.3.集群故障恢复原理1.1.4.小结 2.搭建哨兵集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.测试 3.RedisTemplate3.1.引入依赖3.2.配置Redis地址3.3.配置读写分离 1.Redis哨兵 R…

Centos8安装ffmpeg,使用mediamtx搭建RTSP流媒体服务器

文章目录 1、Centos安装ffmpeg2、使用mediamtx搭建媒体服务器 1、Centos安装ffmpeg 1、先安装epel-release yum install epel-release2、安装nux存储库 rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/…

[NSSROUND#12]杂项记录

文章目录 [NSSRound#12 Basic]Bulbasaur[NSSRound#12 Basic]Secrets in Shadow[NSSRound#12 Basic]奇怪的tex文件[NSSRound#12 Basic]坏东西[NSSRound#12 Basic]ordinary forensics[NSSRound#12 Basic]Noisy Cube[NSSRound#12 Basic]ability[NSSRound#12 Basic]strange python …

数据结构课程设计——集合的交、并和差运算

集合的交、并和差运算 数据结构课程设计任务书 学生姓名&#xff1a; 专业班级&#xff1a; 软件工程 指导教师&#xff1a; 工作单位&#xff1a; 题 目: 集合的并、交和差运算 基础要求&#xff1a; 掌握数据结构与…

最全iOS 上架指南

一、基本需求信息。 1、苹果开发人员账户&#xff08;公司已经可以无需申请&#xff0c;需要开启开发者功能&#xff0c;每年99美元&#xff09; 2、开发好应用程序 二、证书 上架版本需要使用正式证书。 1、创建Apple Developer证书 2、上传证书Sign In - Apple 3、点击开发者…