redis集群

单机redis存在的问题:
1.单点故障
2.容量有限
3.压力过大(socket、io、cpu计算)
redis主从集群使用的是默认的异步复制,其特点是低延迟和高性能,是绝大多数 Redis 用例的自然复制模式。
实现方式:
命令实现,在规划好的从节点执行 REPLICAOF 主机名 主机端口,5.0以前使用 SLVAEOF 命令。执行该命令后,主机会生成rdb文件,从机会清空数据,然后同步、加载主机的数据。默认从机禁止写入数据。
如果从机中途挂掉,修复以后(使用 redis-server ./config --replicatof 主机host 主机端口)只是通步RDB增量数据(从机rdb文件有replicaId),如果开启了AOF则会进行全量同步(AOF问件中没有 replicaId)。
人工故障转移:
如果主机中途挂掉,可以从从机中选择一台做为主机(使用 replicatof no one命令可以从从机恢复为主机。然后从新设置从机)。
自动故障转移,使用sentinel模式。
单机容量问题
实际业务上,若果数据量增大我们可以通过纵向数据拆分(业务分类)来解决单点容量过大的问题,但是如果数据量达到一定程度,每个节点的容量问题还是会凸显出来,这时常用的处理方式为数据分片,即由多个redis节点来承载之前一个节点的数据,平摊压力,常用的实现方式有:

  1. 进行哈希取模 缺点:如果多增加一台机器,数据迁移太麻烦(之前已经存在的部分数据需要迁移到新的节点)
  2. 进行逻辑随机 缺点:可以放进去,但是拿不出来(不知道数据到底落在哪台机器)
  3. 一致性哈希算法 crc16 crc32 md5 sha1 sha256 缺点:新增节点会造成一小部分数据不能命中,缺失了负载均衡的效果。
    针对以上问题,可以通过代理的方式解决,常用的redis代理有twemproxy、predixy、codis等。当然redis本身也对这块做了支持,就是我们的redis cluster,接下来详细说说redis cluster的实现。
    创建集群
    安装完redis以后进到/redis/utils/create-cluster目录(以redis-5.0.8为例),可以看到里面有两个文件
    在这里插入图片描述
    通过阅读README文件可以了解create-cluster工具的使用方法
    通过help查看该命令用法:
    在这里插入图片描述
    修改create-cluster(如有必要),执行 create-cluster start

在这里插入图片描述
我们看到redis会在30001到30006启动6个实例,然后执行create-cluster create命令创建集群,redis会展示一些要创建集群的基本信息(包括主从分配,槽位分配等)
在这里插入图片描述
如果确认没问题就可以输入yes等待集群创建成功。
在这里插入图片描述
这个时候我们就可以通过客户端去连接刚刚的redis集群了,
在这里插入图片描述
简单使用,
在这里插入图片描述
执行了两条命令,但是奇怪的是两条命令,一条执行成功,一条执行失败,这是为什么呢?
其实我们看到报错信息(error) MOVED 12706 127.0.0.1:30003,我们尝试连接30003试试,
在这里插入图片描述
这次,set k1 123执行成功,set k3 aaa却又执行失败,总不能执行不同命令需要我们手动去连接不同几点吧,而且我们也不知道一个key会被分配到哪个节点,换句话说,在redis提示之前我们不知道应该连接哪个节点!其实redis开发者早就想到了,我们只需要以集群的方式连接redis,它就会依据key自动路由到对应节点并执行。
在这里插入图片描述
但是这时如果我们执行一些事物相关的命令,比如WATCH、MULTI命令时,可能又会出问题了(因为redis依据key会在各个节点间路由)
在这里插入图片描述
这时我们可以通过设置一个统一前缀,例如{order}的方式让带相同前缀的key路由到同一个节点,这样上面相关的操作就不会报错了,注意前缀的 {} 不可省略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不务正业的攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值