赞
踩
springboot集成redisson有两种方式,分别是集成redisson-spring-boot-starter或redisson-spring-data。由于作者的项目和redisson-spring-boot-starter有冲突,所以选择集成redisson-spring-data,下面介绍集成集成步骤,已单机版redis为列。
- <dependency>
- <groupId>org.redisson</groupId>
- <artifactId>redisson-spring-data-27</artifactId>
- <version>3.23.3</version>
- </dependency>
根据官网说明,不同步的springboot版本引入不同版本的redisson-spring-data,如下
https://github.com/redisson/redisson/tree/master/redisson-spring-data
1、在classpath下添加redisson.yaml文件用于存放redisson的配置,更多配置参考官网
https://github.com/redisson/redisson/wiki/2.-Configuration
- singleServerConfig:
- address: redis://127.0.0.1:6379 #redis地址
- database: 0 #Database index used for Redis connection
- connectTimeout: 10000 #连接到任何Redis服务器时超时
- timeout: 3000 #Redis服务器响应超时。Redis命令发送成功后开始倒计时。毫秒值
- connectionPoolSize: 64 #Redis连接最大池大小
- connectionMinimumIdleSize: 24 #最小空闲Redis连接量
- idleConnectionTimeout: 10000 #如果池连接在超时时间内未使用,并且当前连接数量大于最小空闲连接池大小,则将关闭并从池中删除。毫秒值
- retryAttempts: 3 #重试次数,如果在retryAttempts之后Redis命令不能被发送到Redis服务器,将会抛出错误。但如果发送成功,则会启动超时
- retryInterval: 1500 #在此时间间隔之后,将执行另一次发送Redis命令的尝试。单位为毫秒
- subscriptionConnectionPoolSize: 50 #Redis订阅连接最大池大小
- subscriptionsPerConnection: 5 #每个Redis连接的订阅限制
- subscriptionConnectionMinimumIdleSize: 1 #最小空闲Redis订阅连接数
- dnsMonitoringInterval: 5000 #DNS变更监控周期。应用程序必须确保JVM DNS缓存TTL足够低以支持这一点。设置-1为禁用。代理模式下支持单个主机名的多个IP绑定
- #password: null
- #username: null
- #clientName: null 客户端连接名称
- #credentialsResolver: 默认空,定义在连接Redis服务器身份验证时调用的凭据解析器。每个Redis节点地址返回凭据对象,它包含用户名和密码字段。允许指定动态更改Redis凭据。
2、注册RedissonClient
- @Configuration
- public class RedissonSpringDataConfig {
-
- @Bean
- public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
- return new RedissonConnectionFactory(redisson);
- }
-
- @Bean(destroyMethod = "shutdown")
- public RedissonClient redisson(@Value("classpath:/redisson.yaml") Resource configFile) throws IOException {
- Config config = Config.fromYAML(configFile.getInputStream());
- return Redisson.create(config);
- }
-
- }
3、编写工具类
- @Component
- public class RedissonUtil {
-
- private static RedissonClient redissonClient;
-
- @Autowired
- public void setRedissonClient(RedissonClient redissonClient) {
- RedissonUtil.redissonClient = redissonClient;
- }
-
- /**
- * key是否存在
- * @param key
- * @return
- */
- public static boolean isExists(String key){
- return redissonClient.getBucket(key).isExists();
- }
-
- /**
- * 获取生命周期
- * @param key
- * @return
- */
- public static long getExpireTime(String key){
- return redissonClient.getBucket(key).remainTimeToLive();
- }
-
- /**
- * 设置生命周期
- * @param key
- * @param time
- * @return
- */
- public static boolean setExpireTime(String key, Long expire){
- return redissonClient.getBucket(key).expire(Duration.ofMillis(expire));
- }
-
- /**
- * 保存字符串
- * @param key
- * @param value
- */
- public static void setStr(String key, String value){
- RBucket<String> rBucket = redissonClient.getBucket(key);
- rBucket.set(value);
- }
-
- /**
- * 保存字符串
- * @param key
- * @param value
- * @param expire
- */
- public static void setStr(String key, String value, Long expire){
- RBucket<String> rBucket = redissonClient.getBucket(key);
- rBucket.set(value, Duration.ofMillis(expire));
- }
-
- /**
- * 查询字符串
- * @param key
- * @return
- */
- public static String getStr(String key){
- if(isExists(key)){
- return null;
- }
- RBucket<String> rBucket = redissonClient.getBucket(key);
- return rBucket.get();
- }
-
- /**
- * 保存对象
- * @param key
- * @param value
- * @param <T>
- */
- public static <T> void setObject(String key, T value){
- RBucket<T> rBucket = redissonClient.getBucket(key);
- rBucket.set(value);
- }
-
- /**
- * 保存对象
- * @param key
- * @param value
- * @param expire
- * @param <T>
- */
- public static <T> void setObject(String key, T value, Long expire){
- RBucket<T> rBucket = redissonClient.getBucket(key);
- rBucket.set(value, Duration.ofMillis(expire));
- }
-
- /**
- * 查询对象
- * @param key
- * @return
- */
- public static <T> T getObject(String key){
- RBucket<T> rBucket = redissonClient.getBucket(key);
- return rBucket.get();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。