SpringBoot集成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; @Bean public 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 * 2 config.setThreads(0); // 0 cpu * 2 config.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 { @Autowired private RedissonClient redissonClient; @Test public 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的实现方法的文章就介绍到这了,更多相关SpringBoot Redisson操作Redis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中的服务发现与负载均衡及Eureka与Ribbon的应用小结
这篇文章主要介绍了Java中的服务发现与负载均衡:Eureka与Ribbon的应用,通过使用Eureka和Ribbon,我们可以在Java项目中实现高效的服务发现和负载均衡,需要的朋友可以参考下2024-08-08使用Eclipse开发工具如何解决Java Compiler中Annotation Processin不出现的问题
这篇文章主要介绍了使用Eclipse开发工具如何解决Java Compiler中Annotation Processin不出现的相关资料,需要的朋友可以参考下2015-11-11SpringBoot整合Elasticsearch实现索引和文档的操作方法
Elasticsearch 基于 Apache Lucene 构建,采用 Java 编写,并使用 Lucene 构建索引、提供搜索功能,本文分步骤通过综合案例给大家分享SpringBoot整合Elasticsearch的相关知识,感兴趣的朋友跟随小编一起看看吧2021-05-05MybatisPlus BaseMapper 实现对数据库增删改查源码
MybatisPlus 是一款在 Mybatis 基础上进行的增强 orm 框架,可以实现不写 sql 就完成数据库相关的操作,这篇文章主要介绍了MybatisPlus BaseMapper 实现对数据库增删改查源码解析,需要的朋友可以参考下2023-01-01
最新评论