Java redis操作api之redisson

来源:互联网 发布:tensorflow feed 图像 编辑:程序博客网 时间:2024/05/21 12:47

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 的整合是挺不错的



原创粉丝点击