分布式redis
来源:7-4 Coding+集群分布式区别讲解
qq_追梦青年_1
2018-03-11
ShardedJedis shardedJedis=ShardedRedisPool.getJedis(); for (int i=0;i<10;i++) { shardedJedis.set("key"+i,"value"+i); } returnJedis(shardedJedis);
老师,这段不是很明白,getresource 后不是应该从redis1 实例或者redis2实例 中二选一进行set嘛!结果应该只有一个实例才有keys 啊!为什么会两个都会有keys,而且在controller层,比如usercontroller,用redisShardedutil存储user对象,取对象的时候如何知道是从redis1中还是redis2 中取值,他会自动识别吗?谢谢老师
写回答
2回答
-
你好,亲爱的同学,这块逻辑是一段测试逻辑,是说往统一的redis集群里面设置值,而这个值可能放到redis1,也可能放到redis2里。结果是只有一个,也就是说key1 要么在redis1里,要么在redis2里。另外你的问题是如何知道从哪里取值,这个就是非常好的问题啦,咱们课程里面有讲的哟,在redis 一致性算法那个章节,同学仔细看一下。
122018-03-17 -
about_blank
2018-03-11
同学你好
首先 我们说的redis分布式 和我们常聊的分布式是不一样的哦
redis 分布式 其实更类似与一个集群的概念
redis的数据都是共享的
只是不同的ABC三台服务器分布不同
二选一如何进行set 和如何进行同步
可以参考getredis 这个方法的源码
实现原理这里涉及到了分布式一致性hash 算法
老师的视频课程中有很详细的ppt 动画讲解
012018-12-05
相似问题