统一管理redis的集群服务,方便各个业务申请专用的redis服务集群节点。
比如有业务部门A和B,A和B使用不同的redis集群服务,你只需要配置
A.ip=127.0.0.1
A.port=6379
B.ip=127.0.0.1
B.port=6379
A业务部门使用方式
Redis.cmd(A).get("foo")
B业务部门使用:
Redis.cmd(B).get("foo")
在java jedis组件中提供了一种集群方式:ShardJedis。它采用对key进行hash计算确定该key应该落到的节点
下面是配置了两个业务的集群:cacheCluster、activityCluster
shard {
# cache cluster01
cacheCluster01: ["127.0.0.1:6379", "127.0.0.1:6379:k74FkBwb7252FsbNk2M7"]
# cache cluster02
cacheCluster02: ["127.0.0.1:6379", "127.0.0.1:6379:k74FkBwb7252FsbNk2M7"]
}
在使用某个集群几点时,可以这样选择服务
Redis.shardCmd("cacheCluster").get("foo");
Twitter twemproxy
twemproxy 是Twitter提供的一种redis集群方式,具体使用可以参照其开源说明文档。
在这种集群中,由于twemproxy提供的是一个代理后的url,我们不用关心在这个url后的redis实例,如果你的业务中用到的是这种redis集群,你可以通过下面配置选项
proxy = {
redis01: "127.0.0.1:6379:k74FkBwb7252FsbNk2M7"
haproxy: "127.0.0.1:6379"
}
比如在这个配置中,我配置了两个节点,在使用时就可以这样使用
Redis.cmd("redis01").get("foo");
除了上面配置redis实例的配置项,还提供了其它一些配置,具体配置可在redis.conf进行更改
# 配置redis连接池
pool {
#最大分配的对象数
maxActive = 2000
#最大能够保持idel状态的对象数
maxIdle = 10
#当池内没有返回对象时,最大等待时间
maxWait = 5000
#当调用borrow Object方法时,是否进行有效性检查
testOnBorrow = false
#当调用return Object方法时,是否进行有效性检查
testOnReturn = false
}
# 配置命令超时执行时间,如果命令执行超过设定时间,抛出超时异常,避免应用线程被长时间挂起
future.invoke.timeout = 5s