Redisson 是一个Java操作redis的api,封装的很不错,相比很多的redis api他具有很多优势,比如面向对象的写法,比如redis基础功能上封装的各种锁,比如通道技术等等,让你能更好的更容易的使用redis。虽然目前也有一些问题存在,但是基本不影响使用
官网地址:https://redisson.org/
git: https://github.com/redisson/redisson (上面有wiki和各种问题的解答,反馈速度还不错)
要想使用redisson很简单,只需要简单的配置即可,目前我们使用的是从json文件读取配置的方式:
${XXX} 中为实际使用的参数值
哨兵模式:
{ "sentinelServersConfig":{ "idleConnectionTimeout":10000, "pingTimeout":1000, "connectTimeout":10000, "timeout":5000, "retryAttempts":3, "retryInterval":1500, "reconnectionTimeout":3000, "failedAttempts":3, "password":"${redis.password}", "subscriptionsPerConnection":5, "clientName":"redis-client", "loadBalancer":{ "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer" }, "slaveSubscriptionConnectionMinimumIdleSize":1, "slaveSubscriptionConnectionPoolSize":50, "slaveConnectionMinimumIdleSize":5, "slaveConnectionPoolSize":250, "masterConnectionMinimumIdleSize":5, "masterConnectionPoolSize":250, "readMode":"MASTER", "sentinelAddresses":[ "//${redis.address.1}", "//${redis.address.2}", "//${redis.address.3}" ], "masterName":"${redis.masterName}", "database":0 }, "codec":null, "useLinuxNativeEpoll":false }
集群模式:
{ "clusterServersConfig":{ "idleConnectionTimeout":10000, "pingTimeout":1000, "connectTimeout":10000, "timeout":5000, "retryAttempts":3, "retryInterval":1500, "reconnectionTimeout":3000, "failedAttempts":3, "password":null, "subscriptionsPerConnection":5, "clientName":"reliance-redis-client", "loadBalancer":{ "class":"org.redisson.connection.balancer.RoundRobinLoadBalancer" }, "slaveSubscriptionConnectionMinimumIdleSize":1, "slaveSubscriptionConnectionPoolSize":50, "slaveConnectionMinimumIdleSize":5, "slaveConnectionPoolSize":250, "masterConnectionMinimumIdleSize":5, "masterConnectionPoolSize":250, "readMode":"SLAVE", "nodeAddresses":[ "//${reliance.redis.address.1}", "//${reliance.redis.address.2}", "//${reliance.redis.address.3}", "//${reliance.redis.address.5}", "//${reliance.redis.address.4}", "//${reliance.redis.address.6}" ], "scanInterval":1000 }, "threads":0, "nettyThreads": 0, "codec":null, "useLinuxNativeEpoll":false }
然后是spring中配置bean就可以了
<bean id="redisConfig" class="org.redisson.config.Config" factory-method="fromJSON"> <constructor-arg type="java.io.File" value="classpath:redis/redis.json"/> </bean> <bean id="redisson" class="org.redisson.Redisson" factory-method="create"> <constructor-arg name="config" ref="redisConfig"/> </bean>上面的配置所指向的文件是你上面的json配置
之后就可以使用注解使用了
@Resource
private Redisson redisson;
他所支持的操作有:bucket(对象操作), list, map, sortedSet, atomicLong以及各种biteStream 等等
下面实际举个栗子:
bucket实际上面是String的封装,底层使用json来存储对象
RBucket<SomeClass> bucket = redisson.getBucket("key"); // 获取对象 bucket.set(new SomeClass()); // 设置一个对象到redis中 SomeClass someClass = bucket.get(); //从redis中获得对象
还支持各种 过期以及异步操作等,功能挺强大
锁操作:
RLock lock = redisson.getLock("key");// 获取对象 boolean isGetLock = lock.tryLock(11, 11, TimeUnit.SECONDS); // 等待一定时间,并且会自动过期 boolean isLock = lock.tryLock(); // 只尝试获取一次 lock.unlock(); // 释放锁
还有各种强大的功能可以查看api
https://github.com/redisson/redisson/wiki
值得一提的是他和spring cache和spring session 的整合是挺不错的