SpringBoot集成Redisson操作Redis
目录
- 一、前言
- 二、基础集成配置(redis单节点)
- 2.1、POM
- 2.2、添加配置文件
- 2.3、添加启动类
- 2.4、添加测试类测试redisson操作redis
一、前言
Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格,Redisson相比较与Jedis和Lettuce来说最大的区别就是,Redisson提供了很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列等,一般建议Lettuce + Redisson一起使用,需要使用Redis高级功能就使用Redisson,如果不需要使用高级功能优先推荐使用Lettuce。
二、基础集成配置(redis单节点)
工程结构

2.1、POM
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.17.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
2.2、添加配置文件
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.codec.JsonJacksonCodec;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RedissonConfig {private String redissonUrl = "redis://172.16.8.169:6379";private String password = "123456";private Integer datebase = 0;@Beanpublic RedissonClient redisson() {Config config = new Config();config.useSingleServer().setAddress(redissonUrl).setPassword((password == null || "".equals(password)) ? null : password).setDatabase(datebase)// 连接空闲超时,如果当前连接池里的连接数量超过了最小空闲连接数,而同时有连接空闲时间超过了该数值,那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。.setIdleConnectionTimeout(10000)// 连接超时,同节点建立连接时的等待超时。时间单位是毫秒。.setConnectTimeout(10000)// 命令等待超时,等待节点回复命令的时间。该时间从命令发送成功时开始计时。.setTimeout(1000)// 命令失败重试次数,如果尝试达到 retryAttempts(命令失败重试次数) 仍然不能将命令发送至某个指定的节点时,将抛出错误。如果尝试在此限制之内发送成功,则开始启用 timeout(命令等待超时) 计时.setRetryAttempts(3)// 命令重试发送时间间隔,在一条命令发送失败以后,等待重试发送的时间间隔。时间单位是毫秒。.setRetryInterval(1500)// 每个连接的最大订阅数量。.setSubscriptionsPerConnection(5)// 用于发布和订阅连接的最小保持连接数(长连接)。Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的。.setSubscriptionConnectionMinimumIdleSize(1)// 用于发布和订阅连接的连接池最大容量。连接池的连接数量自动弹性伸缩。.setSubscriptionConnectionPoolSize(50)// 最小保持连接数(长连接)。长期保持一定数量的连接有利于提高瞬时写入反应速度。.setConnectionMinimumIdleSize(50)// 连接池最大容量。连接池的连接数量自动弹性伸缩。.setConnectionPoolSize(100)// 监测DNS的变化情况的时间间隔。时间单位是毫秒。.setDnsMonitoringInterval(5000)// PING 心跳时间,单位毫秒。.setPingConnectionInterval(10000);// 0 cpu * 2config.setThreads(0);// 0 cpu * 2config.setNettyThreads(0);// 使用json序列化方式config.setCodec(new JsonJacksonCodec());//创建客户端(发现创建RedissonClient非常耗时,基本在2秒-4秒左右)return Redisson.create(config);}
}
2.3、添加启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class RedissonApplication {public static void main(String[] args) {SpringApplication.run(RedissonApplication.class);}
}
2.4、添加测试类测试redisson操作redis
import org.junit.Test;
import org.junit.runner.RunWith;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest(classes = RedissonApplication.class)
public class RedissonTest {@Autowiredprivate RedissonClient redissonClient;@Testpublic void t1(){String key = "key1";System.out.println("获取Bucket");RBucket<Object> bucket = redissonClient.getBucket(key);System.out.println("插入数据到redis");bucket.set("value1");Object value = bucket.get();System.out.println("从redis中获取到值为 "+value);Boolean delete = bucket.delete();System.out.println("删除redis中值 "+delete);}
}
相关文章:
SpringBoot集成Redisson操作Redis
目录 一、前言二、基础集成配置(redis单节点)2.1、POM2.2、添加配置文件2.3、添加启动类2.4、添加测试类测试redisson操作redis 一、前言 Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格,Redisson相比较与Jedis和Lettuce来说最…...
整数反转
题目: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 …...
【ELK使用指南 2】常用的 Logstash filter 插件详解(附应用实例)
Logstash filter 一、logstash filter过滤插件的常用模块简介二、grok 正则捕获插件2.1 grok插件的作用2.2 内置正则表达式2.3 自定义正则表达式 三、mutate 数据修改插件3.1 mutate插件的作用3.2 常用的配置选项3.3 mutate插件应用实例 四、multiline 多行合并插件4.1 multili…...
(转)STR 内核做了什么
参考这篇文章: Linux电源管理(6)_Generic PM之Suspend功能 写的很清晰...
fastapi项目结构以及多进程部署
环境: python3.10.x Linux/centos 背景: 最近在用FastApi开发数据统计,并将统计数据返回给前端展示的数据系统。 数据库: mongodb, python包为mongoEngine 项目结构 main.py api middleware router-- __init__.py-- …...
【LeetCode】 412. Fizz Buzz
题目链接 文章目录 Python3 【O(n) O(1)】C.emplace_back() 【C 11 之后】 Python3 【O(n) O(1)】 初始版本 class Solution:def fizzBuzz(self, n: int) -> List[str]:ans []for i in range(1, n1):if i % 5 0 and i % 3 0:ans.append("FizzBuzz")elif i % …...
vector+算法sort与list+sort的效率比较,容易写错的地方原因探析
我写的代码: #include <iostream> using namespace std; #include <vector> #include <list> #include <algorithm> int main() {const int N 10000000;vector<int> v;list<int> l;for (int i 0; i < N; i){v.push_back(…...
iOS——Manager封装网络请求
在之前的项目里,我们都是把网络请求写在viewController的viewDidLoad,而实际中使用的时候并不能这么简单,对于不同的需要,我们需要有不同的网络请求。所以我们可以用单例模式创建一个全局的Manager类,用实例Manager来执…...
【javascript】内部引入与外部引入javascript
创建a.html 内部引入: 外部引入: 创建a.js 注意: 我这里的a.js和a.html是放在同一个目录下,如果a.js放在js的目录下,a.html 调用a.js的时候 <script src"/js/a.js"></script>...
掌握JavaScript的练习之道:十个手写函数让你信手拈来!
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
买卖股票的最佳时机 II[中等]
优质博文:IT-BLOG-CN 一、题目 给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得…...
前端开发调试技巧:如何在Component下选中当前插件并且查看当前插件信息
在react开发项目中,在Component下选中组件,然后在控制台输$r 按回车键即可输出该组件信息。例如 $r.props输出该组件的props参数。例子详情见如下截图...
你是否还迷茫要不要学习Linux?
近几年Linux这个词好像很流行,无论是现实工作中,还是在网络信息中均可以听到或者看到有关Linux相关的内容,可以说Linux无处不在。说到这,有人可能会问了,我对Linux比较感兴趣,但是没有接触过Linuxÿ…...
leetcode(1)链表
# 1. 定义一个链表节点 class ListNode:def __init__(self, val0, next_nodeNone):self.val valself.next_node next_node# 2. 定义一个 node头节点 class LinkedList:def __init__(self):self.head None# 3.链表查找元素 get(index): def get_node(self, index)…...
spring boot Rabbit高级教程
消息可靠性 生产者重试机制 首先第一种情况,就是生产者发送消息时,出现了网络故障,导致与MQ的连接中断。 为了解决这个问题,SpringAMQP提供的消息发送时的重试机制。即:当RabbitTemplate与MQ连接超时后,…...
FTP的魅力:构建高效的文件传输基础
1 ftp介绍 1.1 ftp服务器安装 dnf install vsftpd-3.0.3-31.el8.x86_64 -y # 安装ftp服务 systemctl enable --now vsftpd # 启动ftp服务 systemctl stop --now firewalld.service # 关闭防火墙,允许客户端访问anonymous_enableYES #启动匿名用户访问功能1.2 客户…...
70、window11+visual studio2019+共享内存进行数据传输
基本思想:服务端和客户端 写共享内存 #include <windows.h> #include <iostream> using namespace std;HANDLE g_EventRead; // 读信号灯 HANDLE g_EventWrite; // 写信号灯 // 定义共享数据class Writer { public:Writer(const int buf_size, const wchar_t…...
SSTI模板注入(flask) 学习总结
文章目录 Flask-jinja2 SSTI 一般利用姿势SSTI 中常用的魔术方法内建函数 利用 SSTI 读取文件Python 2Python 3 利用 SSTI 执行命令寻找内建函数 eval 执行命令寻找 os 模块执行命令寻找 popen 函数执行命令寻找 importlib 类执行命令寻找 linecache 函数执行命令寻找 subproce…...
最近的工作和生活
大家好,我是记得诚。 聊一聊最近的工作和生活。 不知不觉在管理岗位,快干一年了。技术管理还是比较纯粹,主要还是以解决问题为主,对自己的考验也更大了,要关注更广的技术,也要专注更深的技术细节。 技术…...
第六节:Word中对象的层次结构
《VBA之Word应用》(10178982),是我推出第八套教程,教程是专门讲解VBA在Word中的应用,围绕“面向对象编程”讲解,首先让大家认识Word中VBA的对象,以及对象的属性、方法,然后通过实例让…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
电脑桌面太单调,用Python写一个桌面小宠物应用。
下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡,可以响应鼠标点击,并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...
Cursor AI 账号纯净度维护与高效注册指南
Cursor AI 账号纯净度维护与高效注册指南:解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后,许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...
