Jredis和SpringDataRedis学习笔记

jredis基础操作

jredis连接池

其中有个静态方法getJedis能够将练级池中的连接拿取出来并返回

通过setMaxWaitMitllis设置一个响应时间,如果连接池里面没有连接,那么请求连接方在等待超过响应时间时就会报错

springDataRedis

通过这样一个代码将redisTemplate进行装载并且进行注入依赖,并完成对redis的连接

package com.example.demo;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;@SpringBootTest
class Demo1ApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;@Testvoid contextLoads() {redisTemplate.opsForValue().set("name", "顶针");Object name = redisTemplate.opsForValue().get("name");System.out.println(name);}}

序列化

有一点我们需要注意

当我们使用Java代码写入数据的时候

其默认会使用jdk序列化

我们通过源码进行解读,当我们点进去redisTemplate的源码时

我们发现有四个序列化,其分别是对key value进行序列化和对hash里面的key和value进行的序列化

而当我们没有定义这四个序列化的值的时候

我们就会执行下面这一段代码的序列化,这一段代码的序列化采用的是jdk的序列化

我们再次跟进set方法观察set的源码

当我们点进去的时候我们会在rawValue里将对应的value转换为字节数组

当我们接着跟进rawValue()的构造方法,我们会发现里面有我们之前提到过的valueSerializer四个序列化之中的一个序列化,其中他会尝试获取value的序列化值,当我们点进去serialize方法里面

我们会发现serialize使用的是jdk的序列化工具,当我们再次点进去convert的方法里面时

再次点击进入serializeToByteArray方法里面

会发现这样一个方法

当我们再次点击进去,我们就会发现我们使用了objectOutPutStream()这个方法以及接下来的一系列方法都是将Java对象转换为字节并写入redis中,这样的jdk序列化是非常不好的

那么我们有没有一种更好用的序列化呢?

我们观察序列化方法,里面有一个StringRedisSerializer方法是专门用于字符串进行序列化的

当我们的key和hashkey都是字符串的时候可以使用它进行序列化

使用实例

当我们向redis中写入一个对象时,我们通过我们设置的redistemplate将对应的value值转换为了json格式的对象

并且我们存入redis时会有一个@Class的对象标记,这样我们就可以在读取的时候,通过读取字节码来进行反序列化从而将一个json串变成一个对象

但是要注意,将user的字节码写入redis会出现额外的内存开销

所以为了节省空间,我们只能够将value值以字符串的形式存入内存中,然后再手动的进行序列化和反序列化

StringRedisTemplate

大致使用如下

主要要点是因为stringRedisTemplate这个类的key和value都是需要传入一个字符串对象的

假若我们想要传入一个类需要用json序列化的工具将其转换为字符串

常见的有ObjectMapper这种工具,这个来自于springmvc里面的工具

当读取redis里面的数据的时候,也是需要进行反序列化,从redis里面拿取的数据依旧是字符串,同样需要objectMapper进行json串的逆序列化转换为一个对象

使用方法如下所示

hash值的存取

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

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

相关文章

【HarmonyOS Next】鸿蒙监听手机按键

【HarmonyOS Next】鸿蒙监听手机按键 一、前言 应用开发中我们会遇到监听用户实体按键,或者扩展按键的需求。亦或者是在某些场景下,禁止用户按下某些按键的业务需求。 这两种需求,鸿蒙都提供了对应的监听事件进行处理。 onKeyEvent 默认的…

vite调试node_modules下面插件

在使用vite进行开发的时候,我们可能想要修改node_modules中插件的源码.特别是集成一个SDK,需要调试去判断问题时,或者研究第三方源码时后; vite默认是走缓存的,所以当修改后不会看到你打印的日志,这个时候有几种方法可以选择; 方式…

大数据开发治理平台~DataWorks(核心功能汇总)

目录 数据集成 功能概述 使用限制 功能相关补充说明 数据开发 功能概述 数据建模 功能概述 核心技术与架构 数据分析 功能概述 数据治理 数据地图 功能概述 数据质量 功能概述 数据治理资产 功能概述 使用限制 数据服务 功能概述 数据集成 DataWorks的数据…

JAVA生产环境(IDEA)排查死锁

使用 IntelliJ IDEA 排查死锁 IntelliJ IDEA 提供了强大的工具来帮助开发者排查死锁问题。以下是具体的排查步骤: 1. 编写并运行代码 首先,我们编写一个可能导致死锁的示例代码: public class DeadlockExample {private static final Obj…

【DeepSeek】Mac m1电脑部署DeepSeek

一、电脑配置 个人电脑配置 二、安装ollama 简介:Ollama 是一个强大的开源框架,是一个为本地运行大型语言模型而设计的工具,它帮助用户快速在本地运行大模型,通过简单的安装指令,可以让用户执行一条命令就在本地运…

挑战一星期复现一个项目——安全帽项目

本项目为识别安全帽项目,基于yoloV5模型,接下来,我将一步一步展示我的完整复现过程以及遇到的问题和解决方案。 前言 我们在利用GPU进行深度学习的时候,都要去NVIDIA的官网下载CUDA的安装程序和cudnn的压缩包,然后再…

基于java新闻管理系统,推荐一款开源cms内容管理系统ruoyi-fast-cms

一、项目概述 1.1 项目背景 在信息高速流通的当下,新闻媒体行业每天都要处理和传播海量信息。传统的新闻管理模式依赖人工操作,在新闻采集、编辑、发布以及后续管理等环节中,不仅效率低下,而且容易出现人为失误。同时&#xff0…

.NET SixLabors.ImageSharp v1.0 图像实用程序控制台示例

使用 C# 控制台应用程序示例在 Windows、Linux 和 MacOS 机器上处理图像,包括创建散点图和直方图,以及根据需要旋转图像以便正确显示。 这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包(版本 1.0.4)添加到.NET Core 3.1/ …

图论(四):图的中心性——度中心性介数中心性紧密中心性

图的中心性:描述节点在图中有多“中心” 度中心性 以节点的度数度量中心性 用nx.degree_centrality(G)计算 介数中心性 量化节点在图中承担“桥梁”程度。计算 节点v 出现在其他任意两个节点对 (s,t) 之间的最短路径的次数(下式V 是无向图节点集合。(…

在项目中调用本地Deepseek(接入本地Deepseek)

前言 之前发表的文章已经讲了如何本地部署Deepseek模型,并且如何给Deepseek模型投喂数据、搭建本地知识库,但大部分人不知道怎么应用,让自己的项目接入AI模型。 文末有彩蛋哦!!! 要接入本地部署的deepsee…

DeepSeek服务器繁忙 多种方式继续优雅的使用它

前言 你的DeepSeek最近是不是总是提示”服务器繁忙,请稍后再试。”,尝试过了多次重新生成后,还是如此。之前DeepSeek官网连续发布2条公告称,DeepSeek线上服务受到大规模恶意攻击。该平台的对话框疑似遭遇了“分布式拒绝服务攻击”&#xff0…

利用亚马逊AI代码助手生成、构建和编译一个游戏应用(下)

在上篇文章中中,我们介绍了如何通过亚马逊AI代码生成助手 - Amazon Q Developer代理的代码生成、构建和测试功能,让开发者可以更高效地交付高质量代码项目,同时减少代码中bug错误,提升整体开发体验。在本篇中,我们将通…

网络安全技术pat实验 网络安全 实验

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络安全实验3 前言Kali 常用指令工具教程 ettercap 基本使用 一、口令破解 John the ripper 破解 linux 密码l0phtcrack7 破解 windows 密码John 破解 zip 压…

网络行为管理系统是什么?有什么功能?

​简单来说,网络行为管理系统就是对网络进行有效的规范约束和调整,关于网络行为管理系统的相关问题整理了一些详细介绍供大家参考。 一、什么是网络行为管理系统? 在数据网络和数据通信业务发展非常迅速,在数据网络和通信业务迅…

毕业设计—基于Spring Boot的社区居民健康管理平台的设计与实现

🎓 毕业设计大揭秘!想要源码和文章?快来私信我吧! Hey小伙伴们~ 👋 毕业季又来啦!是不是都在为毕业设计忙得团团转呢?🤔 别担心,我这里有个小小的福利要分享给你们哦&…

垃圾回收器

一、GC分类与性能指标 1.垃圾回收器概述: 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,可以将…

Java基础——代理模式

代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。 一、代理模式的主要作用 控制访问:通…

微软宣布 Windows 11 将不再免费升级:升级需趁早

大家都知道如果你现在是Windows 10 系统,其实可以免费升级到正版 Windows 11,只要你的电脑配置满足 TPM2.0要求。 而最近微软已经公布了 Windows 10 的最后支持时间,也就是今年10月14日,在这之后微软将不再对Windows 10负责&#…

django连接mysql数据库

1.下载mysqlclient第三方库 2.在settings.py里连接数据库(提前建好) DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: 学生信息,USER: root,PASSWORD: 999123457,HOST: localhost,POST: 3306,} } 3.在models.py里创建一个类&#xff0…

滤波器 | 原理 / 分类 / 特征指标 / 设计

注:本文为 “滤波器” 相关文章合辑。 未整理去重。 浅谈滤波器之 —— 啥是滤波器 原创 RF 小木匠 射频学堂 2020 年 03 月 25 日 07:46 滤波器,顾名思义,就是对信号进行选择性过滤,对不需要的信号进行有效滤除。按照其传输信…