当前位置: 首页 > news >正文

springboo 整合 redis

springBoot 整合 redis

starter启动依赖。—包含自动装配类—完成相应的装配功能。

  1. 引入依赖
<!--引入了redis整合springboot 的依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 修改配置文件
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-idle=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.jedis.timeout=5000
  1. 使用

springboot整合redis时封装了两个工具类:**StringRedisTemplate****RedisTemplate**.
StringRedisTemplate它是RedisTemplate的子类。StringRedisTemplate里面只能存放字符串的内容。

StringRedisTemplate && redisTemplate

**StringRedisTemplate中定义的5中数据结构,其实和redisTemplate一样,只是参数改成了String,两者的使用就看大家的业务场景了。
QQ_1721789573733.png

opsForList()操作list
opsForValue()操作字符串
opsForCluster()集群时使用
opsForGeo()地理位置时使用
opsForHash()操作hash
opsForSet()操作set
opsForZSet()操作有序set

opsForHash()操作命令

QQ_1721818487604.png

  1. put(H var1, HK var2, HV var3)
    :::tips
  • 新增hashMap值
    • var1 为Redis的key
    • var2 为key对应的map值的key
    • var3 为key对应的map值的值
    • var2相同替换var3

image.png
:::

  1. get(H var1, Object var2)
    :::success
    获取key对应的map中,key为var2的map的对应的值
    QQ_1721818086626.png
    :::

  2. entries(H key)

获取key对应的所有map键值对
QQ_1721818474977.png

  1. keys(H key)

**获取key对应的map中所有的键 **
QQ_1721818640786.png

5、values(H key)
:::danger
获取key对应的map中所有的值
QQ_1721818758194.png
:::

  1. hasKey(H key, Object var2)

判断key对应的map中是否有指定的键
QQ_1721818829048.png

  1. size(H key)
    :::info
    获取key对应的map的长度
    QQ_1721818958535.png
    :::

  2. putIfAbsent(H key, HK var2, HV var3)

如何key对应的map不存在,则新增到map中(true),存在则不新增也不覆盖(false)
QQ_1721819068893.png

  1. putAll(H key, Map<? extends HK, ? extends HV> map)
    :::info
    直接以map集合的方式添加key对应的值
    map中key已经存在,覆盖替换
    map中key不存在,新增
    QQ_1721819261479.png
    :::

  2. multiGet(H key, Collection var2)
    :::tips
    以集合的方式获取这些键对应的map
    QQ_1721819501397.png
    :::

  3. lengthOfValue(H key, HK var2)

获取指定key对应的map集合中,指定键对应的值的长度
QQ_1721819617664.png

  1. increment(H key, HK var2, long long1)

使key对应的map中,键var2对应的值以long1自增
QQ_1721819713521.png

  1. increment(H key, HK var2, double d1)

使key对应的map中,键var2对应的值以double类型d1自增
QQ_1721819802355.png

  1. delete(H key, Object… var2)

删除key对应的map中的键值对
QQ_1721819930636.png

opsForValue()

QQ_1721821312247.png

  1. **set(K var1, V var2)**

新增一个字符串类型的值

  • var1是key
  • var2是值
  • key存在就覆盖,不存在新增

QQ_1721821320573.png

  1. **set(K key, V value, timeout, TimeUnit.XXX)**

新增一个字符串类型的值,同时设置过期时间

  • var1是key
  • var2是值
  • key存在就覆盖,不存在新增

QQ_1721821889011.png

  1. **append(K var1, String var2)**

给对应的key追加value,key不存在直接新增 返回增加后的字符串长度
QQ_1721822009057.png

  1. **set(K key1, V v1, long v2)**

将key的 value 从下标 3 往后替换为新的value, key不存在相当于新增
QQ_1721822182262.png

  1. **setIfAbsent(K var1, V var2);**

如果key不存在则新增(true),key存在不做任何操作(false)
QQ_1721822331980.png

  1. **setIfAbsent(K var1, V var2, long var3, TimeUnit var5)**

如果key不存在则新增,同时设置过期时间,key存在不做任何操作。
QQ_1721822421391.png

  1. **setIfPresent(K var1, V var2)**

如果key存在则修改,key不存在不做任何操作
QQ_1721822579140.png

  1. **setIfPresent(K var1, V var2, long var3, TimeUnit var5)**

如果key存在则修改,同时设置过期时间,key不存在不做任何操作。
QQ_1721822628966.png

  1. **getAndSet(K var1, V var2)**

获取key对应的值,如果key存在则修改,不存在则新增
QQ_1721822690547.png

  1. **increment(K var1)**

以增量的方式(默认增量为1)将long值存储在变量中(value为其他类型时报错),返回最新值
QQ_1721822772504.png

  1. **increment(K var1, long var2)**

以指定增量的方式将Long值存储在变量中,返回最新值
QQ_1721822923541.png

  1. **decrement(K var1)**

以递减的方式(默认为1)将long值存储在变量中(value为其他类型时报错,Double也不行,只能为Long),返回最新值
QQ_1721822964173.png

  1. **decrement(K var1, long var2)**

以指定递减量递减的方式将long值存储在变量中(value为其他类型时报错,Double也不行,只能为Long),返回最新值
QQ_1721823014143.png

  1. **size(K var1)**

获取指定key对应值的长度
QQ_1721823045497.png

  1. **get(Object var1)**

获取指定的key对应的值
QQ_1721823089843.png

  1. **get(K var1, long var2, long var4)**

获取key指定下标之间对应的值
QQ_1721823118912.png

  1. **multiSet(Map<? extends K, ? extends V> var1)**

将map中的key分别作为不同的key存到Redis中(见截图)

  • 若某个key已经存在则替换为新值,其他不存在的则新增
  • map中5个key,3个存在Redis中,2个没有,结果就是3个值被修改,2个新增

QQ_1721823172801.png

在使用 redis 时要注意

如果使用RedisTemplate每次都需要人为指定key和value的序列化
注意导包
**FastJson**

//指定key的序列化方式。
redisTemplate.setKeySerializer(new StringRedisSerializer());
//指定value的序列化方式
redisTemplate.setValueSerializer(new FastJsonRedisSerializer<>(Object.class));

直接写一个序列化配置类

后面再使用时候直接自动注入就行不用再序列化了(省略 8.6.2)

@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);//设置value的序列化方式jsonredisTemplate.setValueSerializer(redisSerializer());//设置key序列化方式StringredisTemplate.setKeySerializer(new StringRedisSerializer());//设置hash key序列化方式StringredisTemplate.setHashKeySerializer(new StringRedisSerializer());//设置hash value序列化jsonredisTemplate.setHashValueSerializer(redisSerializer());redisTemplate.afterPropertiesSet();return redisTemplate;}public RedisSerializer<Object> redisSerializer() {//创建JSON序列化器ObjectMapper objectMapper = new ObjectMapper();objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);//必须设置,否则无法序列化实体类对象objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);return new GenericJackson2JsonRedisSerializer(objectMapper);}

集群模式

只需要修改配置文件

#集群模式
spring.data.redis.cluster.nodes=47.121.143.123:7001,47.121.143.123:7002,47.121.143.123:7003,47.121.143.123:7004,47.121.143.123:7005,47.121.143.123:7006

相关文章:

springboo 整合 redis

springBoot 整合 redis starter启动依赖。—包含自动装配类—完成相应的装配功能。 引入依赖 <!--引入了redis整合springboot 的依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis&…...

dpdk编译安装以及接收udp报文(基于ubuntu)

目录 1、编译 2、设置运行环境 3、使用dpdk接收udp报文 3.1、设置发送端arp信息 3.2、测试 3.3、代码 4、其他 1、编译 代码下载&#xff1a; DPDK 下载版本&#xff1a;DPDK 19.08.2 export RTE_SDK/root/dpdk-stable-19.08.2/ export RTE_TARGETx86_64-native-li…...

【计算机网络】OSPF单区域实验

一&#xff1a;实验目的 1&#xff1a;掌握在路由器上配置OSPF单区域。 2&#xff1a;学习OSPF协议的原理&#xff0c;及其网络拓扑结构改变后的变化。 二&#xff1a;实验仪器设备及软件 硬件&#xff1a;RCMS交换机、网线、内网网卡接口、Windows 2019操作系统的计算机等。…...

Java聚合快递小程序对接云洋系统程序app源码

​一场物流效率的革命 引言&#xff1a;物流新时代的序章 在数字化浪潮席卷各行各业的今天&#xff0c;物流行业也迎来了前所未有的变革。为了进一步提升物流效率&#xff0c;优化用户体验&#xff0c;聚合快递系统与云洋系统小程序的对接成为了行业内外关注的焦点。这一创新…...

【React】详解组件通信:从基础到进阶的全面指南

文章目录 一、父组件向子组件传递数据1. 基本概念2. 示例代码3. 详解定义子组件 Son定义父组件 App导出父组件 App数据流props 的内容 二、子组件向父组件传递数据1. 基本概念2. 示例代码3. 详解引入React库和useState钩子定义子组件 Son定义父组件 App导出父组件 App数据流 三…...

【vluhub】zabbix漏洞

介绍&#xff1a; zabbix是对服务器资源状态例如、内存空间、CPU、程序运行状态进行检测、设置预警值、短信设置等功能等一款开源工具。配置不当存在未授权,SQL注入漏洞 弱口令 nameadmin&passwordzabbix nameguest&password POST /index.php HTTP/1.1 Host: 192.1…...

openGauss触发器详解

openGauss 是一款开源关系型数据库管理系统&#xff0c;广泛应用于企业级应用中。随着数据量的增长和业务逻辑的复杂化&#xff0c;数据库管理和操作的自动化需求越来越高。触发器&#xff08;Triggers&#xff09;作为数据库中重要的编程工具&#xff0c;能够极大地简化复杂操…...

抄作业-跟着《React通关秘籍》捣鼓React-playground-上集

文章目录 前言1. 搭建react 开发环境2、react hooks 知识3. 目标&#xff1a;跟着小册实现 react-playground3.1 整体布局初始化项目使用Alloment 来实现左右分屏的拖拉功能 3.2 代码编辑器Monaco Editor 3.3 实现了多文件的切换用 useContext 来共享数据。优化 tab的样式&…...

80后最后的书信 年代

当时11亿人口只有1.8万部固定电话 中国几千年来 鱼传尺素 雁寄鸿书 写信最后要写 亲啓 如有照片&#xff0c;封面要写内有照片&#xff0c;请勿折叠 信的开头应该是 见字如面&#xff0c;展信舒颜 如果拜托别人做事情&#xff0c;最后要写为盼 最后要写 某某草 书未尽…...

软考-软件设计师(4)-计算机网络与安全:OSI七层、子网划分、网络安全控制技术、网络安全协议、网络安全威胁、对称与非对称加密等高频考点

场景 软考-软件设计师-计算机网络与信息安全模块高频考点整理。 以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。 注: 博客:霸道流氓气质-CSDN博客 实现 知识点 OSI/RM七层模型 注意各层的主要功能,特别是表示层负责数据的加密、压…...

Unity横板动作游戏 -为什么我又开始学习Unity,而不是Godot。

Readme 最近开始学习Unity制作2D动作游戏&#xff0c;由于一些操作第一次接触&#xff0c;为了加深印象&#xff0c;准备写这样一篇同步教程的笔记。 之前也接触过Unity&#xff0c;用 Unity 制作过一个非常简单的小游戏 Flappy Bird&#xff0c;并且魔改成了泰拉瑞亚的版本。…...

什么是NIO

NIO&#xff08;New Input/Output&#xff09;&#xff0c;也称为Java非阻塞IO&#xff0c;是从Java 1.4版本开始引入的一个新的IO API&#xff0c;旨在提供一种比传统的阻塞IO更高效、更灵活的IO操作方式。 一 NIO用法的详细介绍 NIO支持面向缓冲区的、基于通道的IO操作&…...

PHP switch 替代品 match

match 是 PHP 8 中引入的新特性。在 PHP 8 中&#xff0c;match 用作新的类型安全的替代 switch 语句。它提供了更清晰、更简洁的语法&#xff0c;同时还支持表达式作为条件&#xff0c;可以更轻松地处理复杂的条件逻辑。 在 match 表达式中&#xff0c;每个分支都是一个条件和…...

FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 之前文章FastAPI&#xff08;七十三&#xff09;实战开发《在线课程学习系统》接口开发-- 回复留言&#xff0c;那么我们这次分享删除留言接口的开发…...

面试重点---快速排序

快排单趟 快速排序是我们面试中的重点&#xff0c;这个知识点也很抽象&#xff0c;需要我们很好的掌握&#xff0c;而且快速排序的代码也是非常重要&#xff0c;需要我们懂了还不行&#xff0c;必须要手撕代码&#xff0c;学的透彻。 在研究快速排序之前&#xff0c;我们首先…...

[MIT6.5840]MapReduce

MapReduce Lab 地址 https://pdos.csail.mit.edu/6.824/labs/lab-mr.html 论文地址 https://static.googleusercontent.com/media/research.google.com/zh-CN//archive/mapreduce-osdi04.pdf 工作原理 简单来讲&#xff0c;MapReduce是一种分布式框架&#xff0c;可以用来处理…...

【系统架构设计师】计算机组成与体系结构 ⑯ ( 奇偶校验码 | CRC 循环冗余码 | 海明码 | 模 2 除法 )

文章目录 一、校验码1、校验码由来2、奇偶校验码3、CRC 循环冗余码 ( 重点考点 )4、海明码校验 ( 软考不经常考到 ) 二、CRC 循环冗余码 ( 重点考点 )1、模 2 除法概念2、模 2 除法步骤3、模 2 除法示例4、CRC 循环冗余码示例 15、CRC 循环冗余码示例 2 参考之前的博客 : 【计…...

springboot,service 层统一异常抛出时,throws Exception写在接口上还是实现类上

springboot,service 层统一异常抛出时&#xff0c;throws Exception写在实现接口上&#xff0c;不是直接写在实现类上...

深度学习高效性网络

为了减轻Transformer笨重的计算成本&#xff0c;一系列工作重点开发了高效的Vision Transformer&#xff0c;如Swin Transformer、PVT、Twins、CoAtNet和MobileViT。 1、字节TRT-ViT 兼具CNN的速度、Transformer精度的模型 TRT-ViT&#xff08;Transformer-based Vision Tra…...

PyQt ERROR:ModuleNotFoundError: No module named ‘matplotlib‘

Solution:打开cmd输入指令下载malplotlib pip install matplotlib...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...