首页 > 其他 > 详细

Redis(七)

时间:2020-01-20 23:57:04      阅读:128      评论:0      收藏:0      [点我收藏+]

Redis集群

author:QYX

问题:

容量不够?redis如何进行扩容?

并发写操作,redis如何分摊?

什么是集群?

Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这个N个节点中,每个节点存储总数据的1/N

Redis集群通过分区(partition)来提供一定程度的可用性(availbility):即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求

技术分享图片

 

 

 技术分享图片

 

 

 技术分享图片

 

 

 技术分享图片

 

 

 

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

 

 技术分享图片

注意不要使用127.0.0.1,要使用真实的IP地址

我们可以发现集群启动了

技术分享图片

技术分享图片

技术分享图片

然后以集群的方式进入客户端

redis-cli -c(cluster) -p 端口号

测试一下

技术分享图片

技术分享图片

可以使用cluster nodes命令查看集群信息

技术分享图片

 

技术分享图片

 

 

 

 

 我们可以使用{}来指定相关组,相同组之间的数据必定在同一个插槽中

技术分享图片

 

 

技术分享图片

 

 何为slot?

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 

技术分享图片

回答:

1 从节点会变为主节点

2 主节点会变成从节点

3 不能继续

Redis集群提供了以下好处:

1 实现扩容

2 分摊压力

3 无中心配置相对简单

Redis集群的不足

1 多键操作是不被支持的

2 多键的Redis事务是不被支持的,lua脚本也不被支持

3 由于集群方案出现较晚,很多公司已经采用了其他的集群方案,而代理或者客户端分片的方案想要迁移至redis cluster,需要整体迁移而不是逐步过度,复杂度过度

Redis集群的java操作

技术分享图片

 技术分享图片

 

 

public void testRedis()
{
    Set<HostAndPort> sets=new HashSet<>();
    sets.add(new HostAndPort("198.162.99.1",6379));
    JedisCluster jedisCluster=new JedisCluster(sets);
    jedisCluster.set("admin","123456");
    String admin = jedisCluster.get("admin");
    System.out.println(admin);
    jedisCluster.close();
}

Redis(七)

原文:https://www.cnblogs.com/qyx66/p/12219828.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!