Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >spring boot集成redisson的最佳实践

spring boot集成redisson的最佳实践

原创
作者头像
kl博主
发布于 2018-04-13 10:33:02
发布于 2018-04-13 10:33:02
17.7K00
代码可运行
举报
文章被收录于专栏:kl的专栏kl的专栏
运行总次数:0
代码可运行

前言碎语

本文假使你了解spring boot并实践过,非spring boot用户可跳过也可借此研究一下。redisson是redis的java客户端程序,国内外很多公司都有在用,如下,

和spring的集成中官方给出的实例也是比较多,比较方便,具体可查看我之前的一篇博文《spring集成redis客户端jedis以及redisson》,可以提供yaml,json配置文件来实例化redissonClient,也可以使用spring的xml来配置,redisson官方给出了诸如<redisson:client>等标签来简化在xml中的配置,但是如果我们的程序是spring boot,一般都是使用application.properties来配置我们应用配置参数,不想提供额外的yaml,json,xml等配置文件,虽然spring boot也支持这么做。所以如何使用application.properties的方式配置redisson呢,请看下文?

1.提供实例化javabean

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * Created by kl on 2017/09/26.
 * redisson 客户端配置
 */
@ConfigurationProperties(prefix = "spring.redisson")
@Configuration
public class RedissonConfig{

    private String address;
    private int connectionMinimumIdleSize = 10;
    private int idleConnectionTimeout=10000;
    private int pingTimeout=1000;
    private int connectTimeout=10000;
    private int timeout=3000;
    private int retryAttempts=3;
    private int retryInterval=1500;
    private int reconnectionTimeout=3000;
    private int failedAttempts=3;
    private String password = null;
    private int subscriptionsPerConnection=5;
    private String clientName=null;
    private int subscriptionConnectionMinimumIdleSize = 1;
    private int subscriptionConnectionPoolSize = 50;
    private int connectionPoolSize = 64;
    private int database = 0;
    private boolean dnsMonitoring = false;
    private int dnsMonitoringInterval = 5000;

    private int thread; //当前处理核数量 * 2

    private String codec="org.redisson.codec.JsonJacksonCodec";

    @Bean(destroyMethod = "shutdown")
    RedissonClient redisson() throws Exception {
        Config config = new Config();
        config.useSingleServer().setAddress(address)
                .setConnectionMinimumIdleSize(connectionMinimumIdleSize)
                .setConnectionPoolSize(connectionPoolSize)
                .setDatabase(database)
                .setDnsMonitoring(dnsMonitoring)
                .setDnsMonitoringInterval(dnsMonitoringInterval)
                .setSubscriptionConnectionMinimumIdleSize(subscriptionConnectionMinimumIdleSize)
                .setSubscriptionConnectionPoolSize(subscriptionConnectionPoolSize)
                .setSubscriptionsPerConnection(subscriptionsPerConnection)
                .setClientName(clientName)
                .setFailedAttempts(failedAttempts)
                .setRetryAttempts(retryAttempts)
                .setRetryInterval(retryInterval)
                .setReconnectionTimeout(reconnectionTimeout)
                .setTimeout(timeout)
                .setConnectTimeout(connectTimeout)
                .setIdleConnectionTimeout(idleConnectionTimeout)
                .setPingTimeout(pingTimeout)
                .setPassword(password);
        Codec codec=(Codec)ClassUtils.forName(getCodec(),ClassUtils.getDefaultClassLoader()).newInstance();
        config.setCodec(codec);
        config.setThreads(thread);
        config.setEventLoopGroup(new NioEventLoopGroup());
        config.setUseLinuxNativeEpoll(false);
        return Redisson.create(config);
    }

注意:以上代码不是完整的,省略了get set代码

2,application.properties添加如下配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#redis链接地址
spring.redisson.address=192.168.1.204:6379
#当前处理核数量 * 2
spring.redisson.thread=4
#指定编解码
spring.redisson.codec=org.redisson.codec.JsonJacksonCodec;
#最小空闲连接数,默认值:10,最小保持连接数(长连接)
spring.redisson.connectionMinimumIdleSize=12
#连接空闲超时,单位:毫秒 默认10000;当前连接池里的连接数量超过了最小空闲连接数,
#而连接空闲时间超过了该数值,这些连接将会自动被关闭,并从连接池里去掉
spring.redisson.idleConnectionTimeout=10000
#ping节点超时,单位:毫秒,默认1000
spring.redisson.pingTimeout=1000
#连接等待超时,单位:毫秒,默认10000
spring.redisson.connectTimeout=10000
#命令等待超时,单位:毫秒,默认3000;等待节点回复命令的时间。该时间从命令发送成功时开始计时
spring.redisson.timeout=3000
#命令失败重试次数,默认值:3
spring.redisson.retryAttempts=2
#命令重试发送时间间隔,单位:毫秒,默认值:1500
spring.redisson.retryInterval=1500
#重新连接时间间隔,单位:毫秒,默认值:3000;连接断开时,等待与其重新建立连接的时间间隔
spring.redisson.reconnectionTimeout=3000
#执行失败最大次数, 默认值:3;失败后直到 reconnectionTimeout超时以后再次尝试。
spring.redisson.failedAttempts=2
#身份验证密码
#spring.redisson.password=
#单个连接最大订阅数量,默认值:5
spring.redisson.subscriptionsPerConnection=5
#客户端名称
#spring.redisson.clientName=
#发布和订阅连接的最小空闲连接数,默认值:1;Redisson内部经常通过发布和订阅来实现许多功能。
#长期保持一定数量的发布订阅连接是必须的
spring.redisson.subscriptionConnectionMinimumIdleSize=1
#发布和订阅连接池大小,默认值:50
spring.redisson.subscriptionConnectionPoolSize=50
#连接池最大容量。默认值:64;连接池的连接数量自动弹性伸缩
spring.redisson.connectionPoolSize=64
#数据库编号,默认值:0
spring.redisson.database=0
#是否启用DNS监测,默认值:false
spring.redisson.dnsMonitoring=false
#DNS监测时间间隔,单位:毫秒,默认值:5000
spring.redisson.dnsMonitoringInterval=5000 

java bean中已经给所有需要配置的值写上了官方默认的初始值,如果你不考虑更改默认值,实际上你只需要在你的application.properties添加如下配置就好

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#redis链接地址
spring.redisson.address=192.168.1.204:6379

注意:这里配置连接的模式是单机模式,如果你想通过这种配置方式配置集群模式和哨兵模式,请参考官方wiki,修改下java bean就好

githubwiki:https://github.com/redisson/redisson/wiki/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Redisson简单实现redis分布锁并封装
原理简而言之就是:如果有人正在修改某个reids,就上锁,存一个标记到redis中,修改完了就解锁,删除标记。
Diuut
2022/11/22
5840
SpringBoot 操作 Redis的各种实现(以及Jedis、Redisson、Lettuce的区别比较)
共同点:都提供了基于Redis操作的Java API,只是封装程度,具体实现稍有不同。
架构师修炼
2021/09/10
4K0
SpringBoot 操作 Redis的各种实现(以及Jedis、Redisson、Lettuce的区别比较)
SpringBoot系列之集成Redission入门与实践教程
Redisson是一款基于java开发的开源项目,提供了很多企业级实践,比如分布式锁、消息队列、异步执行等功能。本文基于Springboot2版本集成redisson-spring-boot-starter实现redisson的基本应用
SmileNicky
2023/11/09
4.8K0
SpringBoot系列之集成Redission入门与实践教程
在项目中,如何保证幂等性
属性配置 在 application.properites 资源文件中添加 redis 相关的配置项
云扬四海
2021/04/04
7460
Springboot2.4 redisson 配置redis cluster6.2
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100324.html原文链接:
全栈程序员站长
2021/05/19
2.2K0
订单场景-基于Redisson实现订单号生成
订单、指定长度随机码生成是业务系统中重要且不可避免的一个需求,往往在电商系统中,业务量、并发量庞大,如何不重复、快速、安全的生成一个订单号成了需要重点考虑的问题。这篇文章我将举一个实际的订单号生成需求,来和大家一起探究基于Redisson实现订单号的生成。
关忆北.
2023/12/02
5220
订单场景-基于Redisson实现订单号生成
Redis系列之多线程下使用incr/decr命令
Redis是一个单线程的服务,所以正常来说redis的命令是会排队执行的。incr/decr命令是redis提供的可以实现递增递减的命令。但是如果使用不当也会有线程安全问题。动手实践一下吧,用一个例子来模拟实现高并发场景的秒杀减库存业务。
SmileNicky
2023/12/05
8422
Redis系列之多线程下使用incr/decr命令
Redis List 是否适合做消息队列?Spring Boot 与 Redission 实现 Redis 消息队列!
靓仔、靓女们大家好,我是码哥,公众号修改了推送机制,可能需要设置星标才能收到我的推送。
码哥字节
2024/11/23
1510
Redis List 是否适合做消息队列?Spring Boot 与 Redission 实现 Redis 消息队列!
重学springboot系列之集群多节点应用session共享,redis分布式锁
项目内引入spring-session-data-redis,配合spring-boot-starter-data-redis
大忽悠爱学习
2021/12/07
1.6K0
重学springboot系列之集群多节点应用session共享,redis分布式锁
芋道 Spring Boot Redis 入门
在快速入门 Spring Boot 整合 Redis 之前,我们先来做个简单的了解。在 Spring 的生态中,我们使用 Spring Data Redis 来实现对 Redis 的数据访问。
芋道源码
2020/02/20
1.7K0
芋道 Spring Boot Redis 入门
芋道 Spring Boot Redis 入门(下)
摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Redis/ 「芋道源码」欢迎转载,保留摘要,谢谢!
芋道源码
2019/11/20
1.8K0
Redis高并发分布式锁详解
  1.为了解决Java共享内存模型带来的线程安全问题,我们可以通过加锁来保证资源访问的单一,如JVM内置锁synchronized,类级别的锁ReentrantLock。
忧愁的chafry
2022/10/30
1.2K0
Redis高并发分布式锁详解
分布式事务的锁
微服务的流行,使得现在基本都是分布式开发,也就是同一份代码会在多台机器上部署运行,此时若多台机器需要同步访问同一个资源(同一时间只能有一个节点机器在运行同一段代码),就需要使用到分布式锁。
张哥编程
2024/12/13
1770
分布式事务的锁
玩转 Spring Boot 集成篇(MySQL、Druid、HikariCP)
Spring Boot 横扫 Java 程序员在使用 Spring 研发路上的诸多障碍,让研发人员更加专注于业务逻辑的开发,使得企业级项目开发更加快速和高效。
一猿小讲
2022/02/25
5.6K0
玩转 Spring Boot 集成篇(MySQL、Druid、HikariCP)
Spring Boot & Redis
多线程环境下,使用池化技术,提高性能。对Jedis来说更是必须,否则还会出现数据错误。
十毛
2019/03/27
8010
Redis集群实现分布式锁的正确方式
上文我们介绍的 Redis实现分布式锁的正确方式 是 redis 单机的方式,所以本篇要基于 redis 集群做分布式锁,我们使用 Redisson
胖虎
2019/06/26
7.9K0
Redis集群实现分布式锁的正确方式
Spring Boot 数据库连接池参数
Spring Boot 默认选择 Tomcat JDBC Pool 作为数据库连接池。Tomcat(8) 连接池常用的属性:
Dylan Liu
2019/07/01
2.4K0
MySQL 最佳实践:程序端连接池配置
现代网站架构/业务架构越来越重视横向拓展的能力,随之而来的是 Server 或者容器的数量快速增长,但是传统 RDBMS 的扩展性无法跟上这种步伐,导致大量的数据库连接不断的在数据库端创建、断开,不仅性能方面受到影响,在个别极端情况下也会导致数据库本身出现卡死等影响业务的现象。
王文安@DBA
2020/09/30
5.2K0
MySQL 最佳实践:程序端连接池配置
Redis - Spring Data Redis 操作 Jedis 、Lettuce 、 Redisson
https://spring.io/projects/spring-data-redis
小小工匠
2021/08/17
2.7K0
Spring Boot集成Redisson详细介绍
Redisson是一个用于Java的分布式和高可用的Java对象的框架,它基于Redis实现。在Spring Boot应用程序中集成Redisson可以帮助我们更轻松地实现分布式锁、分布式对象、分布式集合等功能。本文将介绍如何在Spring Boot项目中集成Redisson,并展示一些基本用法。
修己xj
2024/02/01
2K0
Spring Boot集成Redisson详细介绍
相关推荐
Redisson简单实现redis分布锁并封装
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验