【项目搭建三】SpringBoot引入redis

添加依赖

本文使用spring data redis访问和操作redis,pom文件中加入以下依赖:

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-redis</artifactId>  
</dependency>

application.yml配置

application.yml中添加以下配置:

redis:host: 127.0.0.1        # 服务地址port: 6379             # 服务端口password: gusy1234     # 服务密码database: 0            # 数据库索引,默认0# 连接池配置,使用lettuce,可选jedislettuce:pool:max-active: 8        # 连接池最大连接数max-idle: 8          # 连接池最大空闲连接数max-wait: -1         # 连接池最大阻塞等待时间,负值表示没有限制         min-idle: 0          # 连接池最小空闲连接数timeout: 1000        # 连接超时时间(毫秒)

注:spring data redis中,可以配置lettuce或jedis作为客户端的连接池。springBoot 2.x默认使用的是lettuce。如果你使用jedis作为连接池,需定义一个JedisConnectionFactory注入到RedisTemplate中,但是这种方式在springBoot 2.x中已经过时,不建议使用。

测试用例

使用RedisTemplate操作redis,以下是测试用例:

@SpringBootTest
class AgedWebApplicationTests {@Autowired@Qualifier("redisTemplate")private RedisTemplate redisTemplate;@Testpublic void redisTest() {redisTemplate.boundValueOps("testKey").set("testValue");System.out.println(redisTemplate.boundValueOps("testKey").get());}
}

进入redis desktop manage查看保存结果:

可以看到value显示为二进制,这是由于redisTemplate默认使用jdk序列化导致的,这种方式生成的数据较大,性能较低,且只有Java应用能够反序列化。本文将用fastjson2作为序列化方式。

fastjson2作为序列化方式

pom文件中引入fastjson2:

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.45</version>
</dependency>

 增加RedisConfig配置类:

import com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
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.StringRedisSerializer;/*** redis配置** @Author: gusy*/
@Slf4j
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);// 使用Fastjson2序列化器GenericFastJsonRedisSerializer redisSerializer = new GenericFastJsonRedisSerializer();// 设置 value 的序列化规则和 key 的序列化规则template.setValueSerializer(redisSerializer);template.setHashValueSerializer(redisSerializer);template.setKeySerializer(new StringRedisSerializer());template.setHashKeySerializer(new StringRedisSerializer());template.afterPropertiesSet();log.info("redis自定义配置启动成功!");return template;}
}

再次执行测试用例,进入redis desktop manage查看结果:

好了,配置完成。

拓展:

RedisTemplat常用序列化方式:
1、JdkSerializationRedisSerializer:使用Java的序列化功能。这是默认的序列化机制,它使用标准的Java序列化方式。
2、StringRedisSerializer:字符串序列化,用于键(key)和值(value)都是字符串的情况。
3、Jackson2JsonRedisSerializer:使用Jackson库将对象序列化为JSON字符串。同fastjson序列化方式。
4、GenericJackson2JsonRedisSerializer:是Jackson2JsonRedisSerializer的泛型版本,可以方便地序列化多种类型,而不需要为每种类型提供类型信息。
5、GenericToStringSerializer:可以将对象序列化为字符串。

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

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

相关文章

python入门,文件的编码,读取,写入,追加

目录 1.文件的编码 2.文件的读取 1.open&#xff08;&#xff09;函数打开文件 2.rede&#xff08;&#xff09;读取文件 3.readlines&#xff08;&#xff09;方法 4.readline&#xff08;&#xff09;方法 5.for循环读取 3.文件的关闭 withopen语法 4.文件的写入 1.…

基于华为MRS3.2.0实时Flink消费Kafka落盘至HDFS的Hive外部表的调度方案

文章目录 1 Kafka1.1 Kerberos安全模式的认证与环境准备1.2 创建一个测试主题1.3 消费主题的接收测试 2 Flink1.1 Kerberos安全模式的认证与环境准备1.2 Flink任务的开发 3 HDFS与Hive3.1 Shell脚本的编写思路3.2 脚本测试方法 4 DolphinScheduler 该需求为实时接收对手Topic&a…

如何使用callable和future创建异步任务?在Java中如何管理依赖?

在Python中&#xff0c;可以使用concurrent.futures模块中的Callable和Future类来创建异步任务。以下是一个简单的例子&#xff1a; import concurrent.futures# 定义一个可调用对象&#xff08;Callable&#xff09;def long_running_task(n):return n * n# 创建一个线程池执行…

使用vscode在wsl2中配置clangd环境

在vscode中安装这三个插件&#xff08;clangd需要科学上网或者从VSIX安装&#xff09; 之后创建一个空目录并进去。 使用快捷键ctrlshiftp&#xff0c;输入命令 Cmake:Quick Start 根据步骤选择。注意在创建CMakeLists.txt这一步选择跳过&#xff0c;直接输入enter&#xff0c…

c# 释放所有嵌入资源, 到某个本地文件夹

版本号 .net 8 代码 using System.Reflection;namespace Demo;internal class Program {static void Main(string[] args){// 获取当前 执行exe 的目录 / 当前命令行所在的目录 var currentDir Directory.GetCurrentDirectory();Console.WriteLine(currentDir);Extract…

Linux 驱动开发基础知识——认识LED驱动程序 (二)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

Linux之进程间通信(管道)

目录 一、进程间通信 1、进程间通信的概念 2、进程间通信的目的 3、进程间通信的分类 二、管道 1、管道基本介绍 2、匿名管道 3、命名管道 一、进程间通信 1、进程间通信的概念 什么是进程间通信&#xff1f; 我们在学习了进程的相关知识后&#xff0c;知道&#xff…

2024 CKA 题库 | 12、查看 pod 日志

不等更新题库 文章目录 12、查看 pod 日志题目:考点&#xff1a;参考链接:解答:检查 12、查看 pod 日志 题目: 设置配置环境&#xff1a; [candidatenode-1] $ kubectl config use-context k8sTask 监控 pod foo 的日志并&#xff1a; 提取与错误 RLIMIT_NOFILE 相对应的日志…

SpringSecurity(07)——JWT整合

依赖配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>s…

树的一些经典 Oj题 讲解

关于树的遍历 先序遍历 我们知道 树的遍历有 前序遍历 中序遍历 后序遍历 然后我们如果用递归的方式去解决&#xff0c;对我们来说应该是轻而易举的吧&#xff01;那我们今天要讲用迭代&#xff08;非递归&#xff09;实现 树的相关遍历 首先呢 我们得知道 迭代解法 本质上也…

C语言:函数指针的使用

在C语言中&#xff0c;函数指针是指向函数的指针变量。它可以存储函数的地址&#xff0c;使得可以通过该指针来调用函数。以下是函数指针的基本概念和用法&#xff1a; 一、基本概念&#xff1a; 声明函数指针&#xff1a; returnType (*pointerName)(parameterTypes); 这里 r…

13.1 一个简单的基类

们在类中添加新特性。 继承是种非常好的概念,其基本实现非常简单。但要对继承进行管理,使之在所有情况下都能正常 工作,则需要做…些调整。本章将介绍继承简单的一面和复杂的一面。 - 13.1 一个简单的基类 从个类派生出另一个类时,原始类称为基类,继承类称为派生类。为说明继…

浅析云服务oss/obs/cos对象存储安全攻防

文章目录 前言云存储服务1.1 初识对象存储1.2 腾讯云COS桶1.3 公开读取风险 对象存储桶风险2.1 Bucket Object遍历2.2 Bucket 名称的爆破2.3 Bucket ACL可读写2.4 任意写与文件覆盖2.5 Bucket 域名的接管 AccessKey凭证泄露3.1 行云管家接管主机3.2 Github泄露AK/SK3.3 客户端程…

【题目】2023年国赛信息安全管理与评估正式赛任务书-模块2

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 任务书 模块二 网络安全事件响应、数字取证调查、应用程序安全 比赛时间及注意事项 本阶段比赛时长为180分钟&#xff0c;时间为13:30-16:30。 【注意事项】 比赛结束&#xff0c;不得关机&#xff1b;选手首先…

Chatgpt+Comfyui绘图源码说明及本地部署文档

其他文档地址&#xff1a; ChatgptComfyui绘图源码运营文档 ChatgptComfyui绘图源码线上部署文档 一、源码说明 1、源码目录说明 app_home&#xff1a;app官网源码chatgpt-java&#xff1a;管理后台服务端源码、用户端的服务端源码chatgpt-pc&#xff1a;电脑网页前端源码cha…

两条链表相同位数相加[中等]

优质博文IT-BLOG-CN 一、题目 给你两个非空的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照逆序的方式存储的&#xff0c;并且每个节点只能存储一位数字。请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数字0之外&#xff0c;这…

【征服Redis12】redis的主从复制问题

从现在开始&#xff0c;我们来讨论redis集群的问题&#xff0c;在前面我们介绍了RDB和AOF两种同步机制&#xff0c;那你是否考虑过这两个机制有什么用呢&#xff1f;其中的一个重要作用就是为了集群同步设计的。 Redis是一个高性能的键值存储系统&#xff0c;广泛应用于Web应用…

【React】Redux的使用详解

文章目录 Redux的三大原则Redux官方图react-redux使用 1、创建store管理全局状态​ 2、在项目index.js根节点引用 3、 在需要使用redux的页面或者组件中&#xff0c;通过connect高阶组件映射到该组件的props中 redux中异步操作如何使用redux-thunkcombineReducers函数 Re…

数据结构和算法笔记4:排序算法-归并排序

归并排序算法完全遵循分治模式。直观上其操作如下&#xff1a; 分解&#xff1a;分解待排序的n个元素的序列成各具n/2个元素的两个子序列。解决&#xff1a;使用归并排序递归地排序两个子序列。合并&#xff1a;合并两个已排序的子序列以产生已排序的答案。 我们直接来看例子…

Flutter 与 Android原生 相互通信:BasicMessageChannel、MethodChannel、EventChannel

前言 本文主要讲解&#xff0c;使用不同的 Channel 让 Flutter 和 Android原生 进行通信&#xff0c;由于只是讲解两端通信&#xff0c;所以可视化效果不好&#xff1b; 不过我写了一篇专门讲解 Flutter 嵌入 Android原生View的文章 Flutter 页面嵌入 Android原生 View-CSDN…