JedisShardInfo 怎么配置密码

 我来答
百度网友faff90e
2017-05-22 · TA获得超过208个赞
知道小有建树答主
回答量:300
采纳率:28%
帮助的人:76万
展开全部
之前一直没仔细看过ShardedJedis的代码,最近遇到了shard后集群扩容后的数据迁移问题。

今天在看ShardedJedis源码的时候,发现ShardedJedis并没有使用节点的Ip和port做hash,而是用的instance的顺序或者name,太赞了。

private void initialize(List shards) {
nodes = new TreeMap();

for (int i = 0; i != shards.size(); ++i) {
final S shardInfo = shards.get(i);
if (shardInfo.getName() == null)
for (int n = 0; n < 160 * shardInfo.getWeight(); n++) {
nodes.put(this.algo.hash("SHARD-" + i + "-NODE-" + n),
shardInfo);
}
else
for (int n = 0; n < 160 * shardInfo.getWeight(); n++) {
nodes.put(
this.algo.hash(shardInfo.getName() + "*"
+ shardInfo.getWeight() + n), shardInfo);
}
resources.put(shardInfo, shardInfo.createResource());
}
}

配置的时候也非常简单:

一开始你可以设置足够多的instance,数据扩容的时候,只需要将几个instance的数据copy到别的机器上。
然后修改配置文件的ip和端口即可。很方便吧?

另外,Jedis还提供了对jedis sentinel pool的封装,所以发生主从切换的时候,web server都不需要重新配置和deploy。高可用性的极佳体现啊。

@Autowired private JedisSentinelPool pool;

public void mymethod() {
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.hset(....
} catch (JedisException je) {
throw je;
} finally {
if (jedis != null) pool.returnResource(jedis);
}
}

spring bean的配置:

hostofsentinel:26379
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
溜溜1213124
2018-05-30
知道答主
回答量:1
采纳率:0%
帮助的人:868
展开全部
JedisShardInfo jsi = new JedisShardInfo(host, port,timeout);
jsi.setPassword("password");
他这种设置密码方式前所未见
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友518f08f
2018-03-06
知道答主
回答量:20
采纳率:0%
帮助的人:19.4万
展开全部
//这里设置密码
jedisShardInfo.setPassword("password");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式