redis集群搭建与简单使用

本文详细介绍了Redis集群的原理、优势及配置流程,包括数据分片、主从复制、一致性保证等关键概念,并提供了具体步骤指导如何搭建和管理Redis集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、redis简介

  1. redis介绍
    redis是一个key-value存储系统。包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

    redis可以持久化存储数据

  2. redis集群介绍
    redis 集群是一个提供在多个redis间节点的共享数据。

    redis 集群通过分区share来提供一定程度的可用性,在实际环境中当某一个节点宕机或者不可达的请况下继续处理命令。

    redis 集群的优势:
    自动分割数据到不同的节点上。
    整个集群的部分节点失败或者不可达的情况下能够继续处理命令。

    redis 集群的数据分片:
    redis使用hash槽,每个key通过CRC16校验后对16384去模来决定防止那个槽,集群的每一个节点来负责一部分hash槽
    例如当前集群有三个节点:

    • 节点A:包含0-5500号hash槽,
    • 节点B:包含5501-11000号hash槽,
    • 节点C:包含11000-16384号hash槽,

    数据究竟存放在那个槽上,数据hash运算除以16384取余。

    集群的主从服复制模型:

    • redis的一致性保证
      redis并不能保证数据的强一致性,这意味着在实际中集群在特定条件下操作可能丢失一些数据。
      集群是用了异步复制写操作过程

二、配置redis集群

环境准备:
192.168.192.137:7000、7001、7002
192.168.192.138:7003、7004、7005

  1. 在两台机器上安装redis
    下载地址: https://redis.io/download

    [root@localhost ~]# wget http://download.redis.io/releases/redis-5.0.4.tar.gz
    [root@localhost ~]# tar xzf redis-5.0.4.tar.gz
    [root@localhost ~]# cd redis-5.0.4/
    [root@localhost redis-5.0.4]# make
    [root@localhost redis-5.0.4]# make PREFIX=/data/redis install
    [root@localhost redis-5.0.4]# mkdir /data/redis/conf
    [root@localhost redis-5.0.4]# cp -p redis.conf /data/redis/conf/
    [root@localhost redis-5.0.4]# cd /data/redis/bin/
    
    [root@localhost bin]# ls
    redis-benchmark  redis-check-rdb  redis-sentinel
    redis-check-aof  redis-cli        redis-server
    [root@localhost bin]# echo "export PATH=$PATH:/data/redis/bin/"  >>  /etc/profile
    [root@localhost bin]# source /etc/profile
    
    #开启服务
    [root@localhost ~]# redis-server /data/redis/conf/redis.conf
    

    在这里插入图片描述
    解决方法:(永久性)

    [root@localhost ~]# vim /etc/sysctl.conf
    net.core.somaxconn=511
    vm.overcommit_memory = 1
    [root@localhost ~]# sysctl -p
    [root@localhost ~]# vim /etc/rc.local
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    [root@localhost ~]# source /etc/rc.local
    

    在这里插入图片描述

    [root@localhost ~]# ps -ef|grep redis
    root       8353   1118  0 15:45 pts/0    00:00:00 redis-server 127.0.0.1:6379
    root       8366   1118  0 15:46 pts/0    00:00:00 grep --color=auto redis
    
    #关闭redis
    [root@localhost ~]# redis-cli shutdown
    
  2. 创建redis节点

    #192.168.192.137
    [root@localhost ~]# mkdir /data/redis/cluster
    [root@localhost ~]# mkdir /data/redis/cluster/700{0..2}
    #192.168.192.138
    [root@localhost ~]# mkdir /data/redis/cluster
    [root@localhost ~]# mkdir /data/redis/cluster/700{3..5}
    
    [root@localhost ~]# cp -p /usr/local/src/redis-5.0.4/redis.conf /data/redis/cluster/7000
    #修改7000的配置文件,加上绝对路径可以避免文件乱存放
    [root@localhost ~]# vim /data/redis/cluster/7000/redis.conf
    bind 192.168.192.137
    port 7000  #使用的端口
    
    pidfile /var/run/redis_7000.pid   
    logfile "/data/redis/cluster/7000/redis_7000.log"
    dir /data/redis/cluster/7000/    #确定dump.rdb文件的绝对路径
    
    appendonly yes
    #开启集群
    cluster-enabled yes
    cluster-config-file /data/redis/cluster/7000/nodes-7000.conf
    cluster-node-timeout 15000
    
    #7001、7002只要把文件里面的7000改成7001、7002就可以
    #192.168.192.138的7003、7004、7005把bind改成本机ip,再把7000改成对应数字就行
    
  3. 启动各实例

    [root@localhost ~]# redis-server /data/redis/cluster/7000/redis.conf &
    .......
    
    [root@localhost ~]# ps -ef | grep redis
    root       4374   1208  0 16:13 pts/0    00:00:11 redis-server 192.168.192.137:7
    root       4426   1208  0 16:14 pts/0    00:00:11 redis-server 192.168.192.137:7
    root       7291   1208  0 17:01 pts/0    00:00:08 redis-server 192.168.192.137:7
    root      15114   1208  0 19:14 pts/0    00:00:00 grep --color=auto redis
    [root@localhost ~]# ps -ef | grep redis
    root       2696   1205  0 16:31 pts/0    00:00:10 redis-server 192.168.192.138:7003 [cluster]
    root       2811   1205  0 16:35 pts/0    00:00:10 redis-server 192.168.192.138:7004 [cluster]
    root       3505   1205  0 17:41 pts/0    00:00:06 redis-server 192.168.192.138:7005 [cluster]
    root       4416   1205  0 19:15 pts/0    00:00:00 grep --color=auto redis
    

    在这里插入图片描述
    在这里插入图片描述

  4. 创建集群
    集群管理工具redis-trib.rb已经被废弃,所以不用安装ruby啥的了,当时redis-trib.rb的功能,现在已经集成到了redis-cli中,并且可以在有认证的情况执行了,可以通过./redis-cli --cluster help查看使用方式。

    #选项--cluster-replicas 1     意味着我们想要为每个创建的主服务器创建一个slave
    [root@localhost ~]# redis-cli --cluster create 192.168.192.137:7000 192.168.192.137:7001 192.168.192.137:7002 192.168.192.138:7003  192.168.192.138:7004 192.168.192.138:7005  --cluster-replicas 1
    

    在这里插入图片描述

  5. 启动集群

    # -h:指定主机(bind的IP) -p:指定端口  -c:以集群方式开启
    [root@localhost ~]#  redis-cli -h 192.168.192.137 -p 7000 -c
    192.168.192.137:7000>
    #在任一节点上存储值,任意节点都能查到
    

    在这里插入图片描述

    [root@localhost ~]#  redis-cli --cluster check 192.168.192.137:7000    #检测集群
    [root@localhost ~]# redis-cli --cluster info 192.168.192.137:7000    #查看集群key、slot、slave分布信息
    [root@localhost ~]#  redis-cli --cluster reshard 192.168.192.138:7005		#在线迁槽	
    
    How many slots do you want to move (from 1 to 16384)? 500   #选择大小
    
    What is the receiving node ID? be8c4c3cc7b63c15eae5d00f5dd5a2564ef3f5b6  #接收节点的节点号
    Please enter all the source node IDs.
    Type 'all' to use all the nodes as source nodes for the hash slots.
     Type 'done' once you entered all the source nodes IDs.
    Source node #1: 386224d97b830811e48adf42b4d97f416523b9ff   #源节点的节点号
    Source node #2: done        #结束
    [root@localhost ~]# redis-cli --cluster rebalance --cluster-threshold 1 192.168.192.138:7005   #平衡各节点槽数量
    [root@localhost ~]# 
    [root@localhost ~]# 
    [root@localhost ~]# 
    [root@localhost ~]# 
    [root@localhost ~]# 
    [root@localhost ~]# 
    [root@localhost ~]# 
    [root@localhost ~]# 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值