完整教程:Redis的java客户端(SpringDataRedis)

news/2025/9/24 13:10:01/文章来源:https://www.cnblogs.com/yfceshi/p/19109044

SpringDataRedis

一、引入依赖

org.springframework.boot
spring-boot-starter-data-redis
org.apache.commons
commons-pool2

二、application.yml配置:我这里为集群配置

spring:
redis:
cluster:
nodes:
- 192.168.48.129:7001
- 192.168.48.129:7002
- 192.168.48.129:7003
- 192.168.48.129:7004
- 192.168.48.129:7005
- 192.168.48.129:7006
max-redirects: 3
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: 100

上述阶段测试生成的数据没有序列化有问题

三、SpringDataRedis的序列化方式

自定义RedisTemplate的序列化方式

package com.kmt.redisdemo.config;
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;
/**
* @Description:
* @Created:
* @author: 枯木堂
* @createTime:
**/
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory){
//创建redisTemplate的对象
RedisTemplate redisTemplate = new RedisTemplate<>();
//设置连接工厂
redisTemplate.setConnectionFactory(connectionFactory);
//创建json序列化工具
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
//设置key的序列化
redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setHashKeySerializer(RedisSerializer.string());
//设置value的序列化
redisTemplate.setValueSerializer(jsonRedisSerializer);
redisTemplate.setHashValueSerializer(jsonRedisSerializer);
//返回
return redisTemplate;
}
}

上述序列化后能达到效果但是多增加了一个类信息,为了在反序列化时知道对象的类型,JSON序列化器会将类的class类型写入json结果中,存入Redis,会带来额外的内存开销。

四、StringRedisTemplate

为了节省内存空间,我们并不会使用JSON序列化器来处理value,而是统一使用String序列化器,要求只能存储String类型的key和value。当需要存储Java对象时,手动完成对象的序列化和反序列化。

Spring默认提供了一个StringRediTemplate类,它的key和value的序列化方式默认就是String方式。省去了我们自定义RedisTemplate的过程:

创建个User对象

package com.kmt.redisdemo.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description:
* @Created:
* @author: 枯木堂
* @createTime:
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private Integer age;
}

使用StringRedisTemplate的测试类如下:

package com.kmt.redisdemo;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.kmt.redisdemo.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
@SpringBootTest
class RedisStringTests {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
void testString(){
stringRedisTemplate.opsForValue().set("name","枯木堂");
Object name = stringRedisTemplate.opsForValue().get("name");
System.out.println("name:"+name);
}
private static final ObjectMapper mapper = new ObjectMapper();
@Test
void testSaveUser() throws JsonProcessingException {
//创建User对象
User user = new User("枯木堂", 20);
//手动序列化
String json = mapper.writeValueAsString(user);
//写入数据
stringRedisTemplate.opsForValue().set("user:100",json);
//获取数据
String jsonUser = stringRedisTemplate.opsForValue().get("user:100");
//手动反序列化
User user1 = mapper.readValue(jsonUser, User.class);
System.out.println("user1:"+user1);
}
}

五、查看redis中的存储信息

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

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

相关文章

模型训练中 平均损失值和平均准确率的深入理解

aver_loss 总损失的计算 对于求平均损失来说 需要先求总损失 而求总损失 就需要求一个批次中的损失 对于一个bs来说 损失的计算是利用 loss=criterion(out,labels)计算得出 而criterion 使用的nn.crossentropy 得出来…

一篇了解 Git 运用方式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

现在有什么网站做设计或编程兼职域名自动更新中

目录 关键词平台说明一、VFB1.1VFB是什么1.1VFB的好处1.2VFB的坏处 二、VFB在ECU内部的描述2.1Components2.2 Port-Interfaces2.3 Port2.4 Compositions 关键词 嵌入式、C语言、autosar、VFB 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0…

torch.max函数在分类问题中的使用 学习

适用于在pytorch的张量上,求某一维度的最大值。 一般在模型测试阶段,求模型预测输出类别的时候使用。 假设是10分类问题,比如mnist 对于一个批次的输入 images 将它传入net(images) 会得到输出out(bs,10) 但是第二个…

手机p2p网站江西省网站建设公司

教程介绍 旨在降低网络防范黑客的入门门槛&#xff0c;适合所有中小企业和传统企业。罗列常见的攻击手段和防范方法&#xff0c;让网站管理人员都具备基本的保护能力。Python 编程的简单实现&#xff0c;让网络运维变得更简单。各种黑客工具的理论和原理解剖&#xff0c;让人知…

网站开发人力成本电子商务营销方案

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

网站开发实训总结致谢网站源码怎么用

来源&#xff1a;非正式组织概要&#xff1a;在Yann LeCun、Yoshua Bengio和Geoffrey Hinton三巨头nature深度学习综述《deep learning》文章中提到&#xff0c;这段期间神经网络模型被主流的计算机视觉和学术界所抛弃。一、前言深度学习的发展大致分为这么几个学期&#xff1a…

vultr做网站怎么样WordPress登录提醒

redis设置&#xff1a;修改redis服务器的配置文件vim /usr/local/redis/bin/redis.confbind 0.0.0.0 protected-mode no重新启动redissystemctl restart redis.service #重新启动服务注意&#xff1a;服务器的话需要设置安全组开放端口1.导入依赖org.springframework.boot …

react native 国际化 react-i18next 和 i18n,运用高级组件的形式。 - 指南

react native 国际化 react-i18next 和 i18n,运用高级组件的形式。 - 指南2025-09-24 12:57 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x:…

godot3.6字典遍历

godot3.6字典遍历for key in Global.dataJson["game"]:if Global.dataJson["game"][key]["status"] == "在看":game_watch_count+=1

国产DevOps工具链崛起:Gitee领衔的本土化技术生态全景解读

国产DevOps工具链崛起:Gitee领衔的本土化技术生态全景解读 在全球数字化转型加速的背景下,企业技术团队正积极寻求高效、安全的软件开发与运维解决方案。DevOps(开发运维一体化)作为提升软件交付效率的关键实践,正…

安装 elasticsearch-9.1.4的 IK分词器

前提 IK 分词器的文档中描述,在 Elasticsearch 中可以使用命令来安装操作,如下图所示操作过程如下挑选主节点的机器,操作如下[es@lab10 elasticsearch-9.1.4]$ bin/elasticsearch-plugin install https://get.infin…

已收录的网站不好优化wordpress企业营销

拆分Transformer注意力&#xff0c;韩国团队让大模型解码提速20倍AI正在颠覆AI上市不到两年&#xff0c;蜗牛游戏可能要退市了&#xff1f;世界人工智能大会结束了&#xff0c;百花齐放&#xff0c;但也群魔乱舞“串联OLED”被苹果带火了&#xff0c;比OLED强在哪里&#xff1f…

免费医院网站源码静态网页效果图

内容 本次入门内容是调用OpenAI的聊天机器人功能。 实现原理是使用OpenAI提供的API&#xff0c;通过向其发送请求来生成回复文本。 首先&#xff0c;导入ChatOpenAI类&#xff0c;这个类是用于实现与OpenAI聊天机器人交互的。 pip install langchain-openai2. 编写调试代码 …

react性能优化

memo 如下所示例子中,因为App内部状态的更新,总会牵连其无辜子组件Demo的更新。 const Demo = () => {console.log(Demo render);return (<div>我是子组件</div>); };const App = () => {console.…

从研发效能到知识中枢:Gitee Wiki如何重塑企业知识管理范式

从研发效能到知识中枢:Gitee Wiki如何重塑企业知识管理范式 在数字化浪潮席卷全球的当下,企业知识管理正经历着从简单文档存储向智能中枢的范式转变。某研发团队经过长达两年的实践探索,对Notion、Confluence和Gite…

站点建错了网页能打开吗ps做网站首页

推荐一个学习资源&#xff1a;数据结构与算法之美。主要包括以下几个学习内容&#xff1a; 20个经典数据结构与算法100个真实项目场景案例文科生都能看懂的算法手绘图解轻松搞定BAT的面试通关秘籍 作者&#xff1a;王争 前谷歌工程师 内容很强。扫描我的二维码买的话&#x…

全国房地产网站如何运营一个公众号

MySql索引(二) 转自&#xff1a; http://www.cnblogs.com/dreamhome/archive/2013/04/16/3025304.html 所有MySQL列类型可以被索引。根据存储引擎定义每个表的最大索引数和最大索引长度。 所有存储引擎支持每个表至少16个索引&#xff0c;总索引长度至少为256字节。大多数存储引…

金华建设二建哪个网站报名商洛微网站建设

搜索AI伙伴 申请到了百度的chatgpt&#xff1a; 完整的窗口布局&#xff1a; 三个哲学问题&#xff1a; 灵感中心&#xff1a; 请做一副画&#xff0c;一个渔夫&#xff0c;冬天&#xff0c;下着大雪&#xff0c;在船上为了一家的生计在钓鱼&#xff0c;远处的山上也都是白雪&a…

Gitee DevSecOps平台:军工软件研发的智能化革命

Gitee DevSecOps平台:军工软件研发的智能化革命 军工行业正经历着数字化转型的关键时期,软件研发的工业化进程已成为提升国防科技实力的重要突破口。在这一背景下,Gitee DevSecOps平台凭借其创新的智能版本管理体系…