SpringDataRedis笔记

news2024/10/7 8:28:04

spring:
  application:
    name: springdataredis

  redis:
    host: 120.0.0.1
    port: 6379
    password: 123456
    lettuce:
      pool:
        #最大连接数 默认就是8
        max-active: 8
        #最大空闲连接 默认就是8
        max-idle: 8
        #最小空闲连接 默认是0
        min-idle: 0
        #连接等待时间  默认-1无限等待
        max-wait: 100

RedisTemplate默认用JDK序列化

就会出现这样情况

会导致的问题是 当不同客户端由于序列化不同  取出来的不同

例如 我们取  取不出来了   当然  你如果相同客户端  还是可以取出来的  但是显示效果不好 可读性效果不好

所以一般会修改他的序列化  可读性强

那么就改变RedisTemplate的序列化方式

配置类

一般来说key和hashkey都会String

@Configuration
public class RedisTemplateConfig {

    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){
        //创建Template
        RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>();
        //设置连接工程
        redisTemplate.setConnectionFactory(connectionFactory);
        //设置序列化工具
        GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer=new GenericJackson2JsonRedisSerializer();
        //Key和hashKey一般用String序列化
        redisTemplate.setKeySerializer(RedisSerializer.string());
        redisTemplate.setHashKeySerializer(RedisSerializer.string());
        //value和hashValue采用JSON序列化
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        return redisTemplate;
    }

}

我这里因为引入了web  (里面包含了jackson依赖)如果没有  就引入

这样对象也可以序列化

一般的做法

啥意思呢   就是说建议是将value序列化  和hashValue序列话也改成String 达到节省redis内存占用问题,代码上就稍微多写几行

SpringBoot提供了StringRedisTemplate专门用于将Key Value的序列化方式默认就是String方式

代码上我们就多写了几行  但是在大数据时候 保证了Redis中内存不浪费  

 @Bean
    public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
        //生成一个默认配置,通过config对象即可对缓存进行自定义配置
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
        config = config
                // 设置 key为string序列化
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
                // 设置value为json序列化
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer() ))
                // 不缓存空值
                .disableCachingNullValues()
                // 设置缓存的默认过期时间 30分钟
                .entryTtl(Duration.ofMinutes(30L));

        //特殊缓存空间应用不同的配置
        Map<String, RedisCacheConfiguration> map = new HashMap<>();
        map.put("provider1", config.entryTtl(Duration.ofMinutes(30L)));//provider1缓存空间过期时间 30分钟
        map.put("provider2", config.entryTtl(Duration.ofHours(1L)));//provider2缓存空间过期时间 1小时

        //使用自定义的缓存配置初始化一个RedisCacheManager
        RedisCacheManager cacheManager = RedisCacheManager.builder(connectionFactory)
                .cacheDefaults(config) //默认配置
                .withInitialCacheConfigurations(map) //特殊缓存
                .transactionAware() //事务
                .build();

        return cacheManager;
    }

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

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

相关文章

es 进阶查询

准备数据 先准备一些数据 #指定ik分词器 PUT /es_db {"settings" : {"index" : {"analysis.analyzer.default.type": "ik_max_word"}} }# 创建文档,指定id PUT /es_db/_doc/1 { "name": "张三", "sex"…

【鸿蒙 HarmonyOS 4.0】Web组件

一、介绍 页面加载是Web组件的基本功能。根据页面加载数据来源可以分为三种常用场景&#xff0c;包括加载网络页面、加载本地页面、加载HTML格式的富文本数据。 二、加载网页 2.1、加载在线网页 Web组件的使用非常简单&#xff0c;只需要在Page目录下的ArkTS文件中创建一个…

ArcGIS学习(十六)基于交通网络的城市情景分析

ArcGIS学习(十六)基于交通网络的城市情景分析 本任务给大家带来一个非常重要的内容一一基于交通网络的城市情景分析。基于交通网络模拟交通出行并进行相关分析是ArcGIS里面一种常用的分析方法,大家一定要掌握!本任务包括三个关卡: 交通网络模型构建基于交通网络模型的基本…

mysql show profile 简单使用

mysql官网 http://dev.mysql.com/doc/refman/ 1、是否支持&#xff0c;看看当前的mysql版本是否支持 show variables like profiling;2、开启功能&#xff0c;默认是关闭&#xff0c;使用前需要开启 set profilingon;3、运行sql 4、查看结果&#xff0c;show profiles; 5、…

Acer宏碁非凡Swift SFG16-71工厂模式原厂Win11系统,预装OEM系统恢复开箱状态

宏基笔记本电脑SFG16-71原装出厂Windows11系统安装工厂包下载&#xff0c;带恢复重置功能 链接&#xff1a;https://pan.baidu.com/s/1JK02kBbwKG_cIBNlEOzrOw?pwdzdfm 提取码&#xff1a;zdfm 原装工厂包系统自带所有驱动、Office办公软件、出厂时自带主题壁纸图片、系统…

Gitlab CICD 下载artifacts文件并用allure打开,或bat文件打开

allure命令行打开aritfacts报告 首先下载allure.zip&#xff0c;并解压 配置环境变量 使用命令行打开allure文件夹 allure open 2024-03-11-14-54-40 2024-03-11-14-54-40 包含index.html Bat文件打开artifacts There are 2 html reports in the download artifacts.zip S…

排序类算法

目录 一、交换类排序 1.冒泡排序 2.快速排序 二、 插入排序 1.直接插入排序 2.折半插入排序 3.希尔排序 三、选择排序 1.简单选择排序 2.堆排序 完整代码 四、归并排序 完整代码 五、汇总 六、OJ练习 1.冒泡排序&#xff1a;正确表示前一个数和后一个数 2.选…

Transformer模型引领NLP革新之路

在不到4 年的时间里&#xff0c;Transformer 模型以其强大的性能和创新的思想&#xff0c;迅速在NLP 社区崭露头角&#xff0c;打破了过去30 年的记录。BERT、T5 和GPT 等模型现在已成为计算机视觉、语音识别、翻译、蛋白质测序、编码等各个领域中新应用的基础构件。因此&#…

2、功能安全入门之ISO26262说人话版本GB_T 34590

目录 0. 一些功能安全资料 1. 什么是功能安全? 1.1 安全三剑客 1.2 功能安全如何解决问题: 2. ISO26262说人话版本 3-5 相关项 3-7 危害分析和风险评估 3-8功能安全方案 4-5 系统层面 5-5 硬件级产品开发 6-5 软件层面 6-6 软件架构安全设计要求 功能监控层安全…

嵌入式面经-ARM体系架构-计算机基础

嵌入式系统分层 操作系统的作用&#xff1a;向下管理硬件&#xff0c;向上提供接口&#xff08;API&#xff09; 应用开发&#xff1a;使用操作系统提供的接口&#xff08;API&#xff09;&#xff0c;做上层的应用程序开发&#xff0c;基本不用去关内核操作硬件是怎么实现的 …

数据库管理-第159期 Oracle Vector DB AI-10(20240311)

数据库管理159期 2024-03-11 数据库管理-第159期 Oracle Vector DB & AI-10&#xff08;20240311&#xff09;1 其他distance函数2 实例演示使用其他函数寻找最近向量点函数变体简写语法 总结 数据库管理-第159期 Oracle Vector DB & AI-10&#xff08;20240311&#x…

02 THU大模型之 Neural Network

1 Neural Network 1.1 Neural Network Components Simple Neuron单个神经元 A neuron is a computational unit with n inputs and 1 output and parameters W(权重) , b 具体来说, 输入向量( Xi )和权重向量( Wi )进行点乘得到标量值, 标量值加上偏置值b后送入激活函数acti…

【机器学习】科学库使用第1篇:机器学习(常用科学计算库的使用)基础定位、目标【附代码文档】

机器学习&#xff08;科学计算库&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习&#xff08;常用科学计算库的使用&#xff09;基础定位、目标&#xff0c;机器学习概述&#xff0c;1.1 人工智能概述&#xff0c;1.2 人工智能发展历…

HCIA-Datacom题库(自己整理分类的)_54_聚合判断【8道题】

1.路由器的聚合端口可以配置路由器子接口。√ 2.Eth-Trunk 两端的负载分担模式可以不一致。√ 3.链路聚合接口只能作为二层接口。 4.在园区网络中通过使用链路聚合、堆叠技术可以提高网络可靠性。√ 5.园区网可以通过链路聚合和堆叠提高网络可靠性。√ 6.交换机通过堆叠、…

部署ELK日志分析系统

简介 在大型运维环境中&#xff0c;管理员通常面对大量的服务器&#xff0c;对于这些服务器的维护&#xff0c;一个很重要的工作就是查看每台服务器的日志信息&#xff0c;而每天逐台检查的方式显然效率比较低下。传统的方式是通过搭建日志服务器&#xff0c;将所有服务器的日志…

VB编程技术笔记

连续赋值 at:tb:ba 分支语句&#xff1a;

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 3、线条平滑曲面但有条纹

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata im…

C++之对象模型和this 指针,友元,和运算符重载

1&#xff0c;对象模型和this 指针 1.1成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 示例&#xff1a; #include<iostream> using namespace std;//成员变量 和 成员函数 分开存储 class Per…

Vue3全家桶 - Vue3 - 【6】组件(注册组件 + 组件通信 + 透传属性和事件 + 插槽 + 单文件CSS + 依赖注入)

组件 一、 注册组件 1.1 ❌ 全局注册 目标文件&#xff1a;main.js&#xff1b;语法&#xff1a;import { createApp } from vue import App from ./App.vue const app createApp(App)// 全局注册 app.component(组件名字, 需要注册组件)app.mount(#app)缺陷&#xff1a; 全…

怎样在CSDN赚点零花钱

请教一下各位大佬&#xff0c;看到你们在CSDN很多都几万粉丝以上&#xff0c;能不能分享一下有什么涨粉的经验&#xff0c;还有怎样转化为额外收益……感谢各位提供宝贵的经验&#xff0c;谢谢……