spring 集成redisson

一 背景

   一定压力下,Redis的主从结构还是容易出问题,升级到Redis集群模式会提高性能。

  如何平滑升级是需要重点考虑的。这里不展开,项目中升级遇到新项目springboot.老项目spring。这里看下如何集成。

二 xml 整合

首先推荐官网,看懂官网就不用看我啰嗦了。

  https://github.com/redisson/redisson/wiki/14.-%E7%AC%AC%E4%B8%89%E6%96%B9%E6%A1%86%E6%9E%B6%E6%95%B4%E5%90%88

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:redisson="http://redisson.org/schema/redisson"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://redisson.org/schema/redisson
       http://redisson.org/schema/redisson/redisson.xsd">
    <redisson:client
            id="redissonCilent"
            netty-threads="20"
            threads="20"
            codec-ref="org.redisson.codec.JsonJacksonCodec">

        <redisson:cluster-servers
                idle-connection-timeout="10000"
                ping-timeout="1000"
                connect-timeout="10000"
                timeout="3000"
                retry-attempts="3"
                retry-interval="1500"
                reconnection-timeout="3000"
                failed-attempts="3"
                password="test"
                subscriptions-per-connection="5"
                client-name="none"
                load-balancer-ref="org.redisson.connection.balancer.RoundRobinLoadBalancer"
                subscription-connection-minimum-idle-size="1"
                subscription-connection-pool-size="50"
                slave-connection-minimum-idle-size="10"
                slave-connection-pool-size="6400"
                master-connection-minimum-idle-size="50"
                master-connection-pool-size="6400"
                read-mode="SLAVE"
                subscription-mode="SLAVE"
                scan-interval="1000"
        >
            <redisson:node-address value="redis://10.1.1.1:1110" />
            <redisson:node-address value="redis://10.1.1.1:1111" />
            <redisson:node-address value="redis://10.1.1.1:1112" />
            <redisson:node-address value="redis://10.1.1.1:1114" />
            <redisson:node-address value="redis://10.1.1.1:1115" />
            <redisson:node-address value="redis://10.1.1.1:1113" />
        </redisson:cluster-servers>
    </redisson:client>

</beans>

三 config 配置

2.1. 程序化配置方法

Redisson程序化的配置方法是通过构建Config对象实例来实现的。例如:

Config config = new Config();
config.setTransportMode(TransportMode.EPOLL);
config.useClusterServers()
      //可以用"rediss://"来启用SSL连接
      .addNodeAddress("redis://127.0.0.1:7181");
@Configuration
public class RedissonOption {
    private static final Logger logger = LoggerFactory.getLogger(RedissonOption.class);

    private RedissonClient redissonClient;
   
  

    @Bean(destroyMethod = "shutdown")
    public RedissonClient redissonCilent() throws Exception {

        return RedissonClientFactoryBean.getRedisson();
    }

}

这个factory方法就是上面根据config去创建

return Redisson.create(config);

引用:

    @Resource
    RedissonClient redissonClient;

使用config而不使用xml或者yaml,json的配置文件,主要想使用动态配置,如集群节点等。 

遇到的坑:

java.lang.NoClassDefFoundError: org/nustaq/serialization/FSTObjectOutput

。。。。

缺少jar.

 <dependency>
            <groupId>de.ruedigermoeller</groupId>
            <artifactId>fst</artifactId>
            <version>2.56</version>
        </dependency>

spring netty包冲突:(不是springboot,它可以选择最新版本)

选用redison版本:

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.5.6</version>
</dependency>

另外,一些语法上的不同,如setnx被bucket.tryset替换等,看下api就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bohu83

买个馒头吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值