redis的集群常规操作记录

本文详细介绍了Redis的安装步骤及配置方法,并深入探讨了主从复制、哨兵、事务处理、持久化策略(RDB与AOF)及集群搭建等高级特性。

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

系列教程都是从网络上收集和本人的理解所编辑而成,仅供广大爱好者学习所用,请尊重本人的劳动成果。欢迎评论指正和转帖!(请保留连接谢谢!)



 《Redis安装》
    下载地址http://redis.io/download

安装步骤:
    1 首先需要安装gcc,把下载好的redis-3.0.0-rc2.tar.gz 放到linux /usr/local文件夹下
    2 进行解压 tar -zxvf redis-3.0.0-rc2.tar.gz
    3 进入到redis-3.0.0目录下,进行编译 make
    4 进入到src下进行安装 make install  验证(ll查看src下的目录,有redis-server 、redis-cil即可)
    5 建立俩个文件夹存放redis命令和配置文件
       mkdir -p /usr/local/redis/etcmkdir -p /usr/local/redis/bin
    6 把redis-3.0.0下的redis.conf 移动到/usr/local/redis/etc下,
       cp redis.conf /usr/local/redis/etc/
    7 把redis-3.0.0/src里的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-dump、redis-cli、redis-server 
文件移动到bin下,命令:
       mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
    8 启动时并指定配置文件:./redis-server /usr/local/redis/etc/redis.conf(注意要使用后台启动,所以修改redis.conf里的 daemonize 改为yes)
    9 验证启动是否成功:
       ps -ef | grep redis 查看是否有redis服务 或者 查看端口:netstat -tunpl | grep 6379

       进入redis客户端:./redis-cli 

       退出客户端:quit

退出redis服务三种方法: 
    (1)pkill redis-server 
    (2)kill 进程号            
    (3)/usr/local/redis/bin/redis-cli shutdown 



《Redis主从复制》
      原理:从服务器找主服务器,主服务器可读可写,从服务器只能读不能写。
      配置:在从服务器中配置一句:slaveof 主服务器IP地址 主服务器端口号。



《Redis哨兵》
      原理:在从节点的任意一台机器上部署,或者开启一台新机器进行部署。
      配置:修改redis中的sentinel.conf文件。
      port 26378(自己取IP地址)
      dir "/tmp"
      sentinel monitor master1 10.46.28.2 6378 1
      sentinel down-after-milliseconds master1 5000
      sentinel failover-timeout master1 5000
      sentinel config-epoch master1 80
      loglevel notice
      logfile "/home/www/output/redis/logs/redis-sentinel.log"
      # Generated by CONFIG REWRITE
      sentinel leader-epoch master1 5049
      sentinel current-epoch 5049
      启动:   ./redis-server  ./sentinel.conf
      查看:   ./redis-cli -h 192.168.1.121 -p 26379 info Sentinel
      关闭:   ./redis-cli -h 192.168.1.121 -p 6379 shutdown



《Redis事务》
  进入redis中,执行如下命令:
  multi --->开启事务
  set xx -->设置值
  exec  --->确认执行
  注意:事务操作不会影响其它的数据,仅仅当前出错的数据不能成功,其它是成功的,没有回滚环节。



《 Redis持久化-RDB与AOF的区别》
   两种区别就是,一个是持续的用日志记录写操作,crash后利用日志恢复;一个是平时写操作的时候不触发写,只有手动提交save命令,或者是关闭命令时,才触发备份操作。
   选择的标准,就是看系统是愿意牺牲一些性能,换取更高的缓存一致性(aof),还是愿意写操作频繁的时候,不启用备份来换取更高的性能,待手动运行save的时候,再做备份(rdb)。rdb这个就更有些 eventually consistent的意思了。
   参考:http://blog.youkuaiyun.com/jackpk/article/details/30073097




《Redis集群》
  原理:主要是修改redis.conf文件中的配置,来实现多redis集群,可以用一台电脑或多台电脑。
  实现:
  1.把redis.conf文件放置在统一的位置,方便管理。
  2.修改里面的配置:
    a.daemonize  --->yes
    b.port --> 设置成独立的,类似的:7000。。。。70001
    c.bind --> 必须要绑定当前机器的IP地址
    d.dir  --> 指定数据文件存放的位置,有RDB和A0F模式
    e.cluster-enabled --> yes  设置集群模式
    f.cluster-config-file -->对应设置每个conf文件,用端口号+名字的方法 例如:redis7000.conf
    g.cluster-node-timeout -->设置节点超时时间 5000
    h.appendonly -->yes
  3.由于redis集群需要ruby,所有需要安装
    a.yum install runby
    b.yum install rubygems
    c.gem install redis  (插件)
  4.运行单个的redis
  5.启动集群
  ./redis-trib.rb create --replicas 1(主从占比,从除以主) 192.168.1.121:7001 192.168.1.121:7002 192.168.1.121:7003 192.168.1.121:7004 192.168.1.121:7005 192.168.1.121:7006




《访问集群某个节点》
./redis-cli -c -h 192.168.1.121 -p 7001




《新增集群从节点》
  ./redis-trib.rb add-node 192.168.1.121.7007(新增节点) 192.168.1.121.7001(主节点)默认是主节点,但是不能存放数据,需要分配存储数据的空间
  ./redis-trib.rb reshard 192.168.1.121.7007 (增加存储数据的空间)
  1.设置存储空间
  2.输入ID号
  3.输入 all 表示平均分配
  4.输入yes




《新增集群主节点》
./redis-trib.rb add-node 192.168.1.121.7008(新增节点) 192.168.1.121.7001(默认是主节点,变成从节点)
./redis-cli -c -h 192.168.1.121 -p 7008 (登陆后输入下面命令)
cluster replicate id(主节点id) 




《删除集群从节点》
./redis-trib.rb del-node 191.168.1.121:7008  id(节点id) 




删除集群主节点》
  删除主节点之前,我们要把数据移动到其它节点上。
  ./redis-trib.rb reshard 192.168.1.121.7007 (增加存储数据的空间)
  1.设置存储空间
  2.移动到哪个ID号
  3.输入done 表示结束
  4.输入yes
  执行删除
  ./redis-trib.rb del-node 191.168.1.121:7008  id(节点id) 

### Redis 主从集群搭建完成后查看集群状态不显示集群信息解决方案 当完成Redis主从集群的搭建之后,如果发现通过命令行工具或其他方式查询集群状态时未能正常显示出集群的信息,这可能是由多种因素引起的。 #### 可能原因分析 1. **未启用Cluster模式** 如果仅配置了主从关系而没有开启Cluster模式,则不会看到预期中的集群拓扑结构。为了使多个实例能够组成一个真正的分布式存储系统,必须确保所有参与节点都已设置`cluster-enabled yes`参数[^1]。 2. **端口通信问题** 各个Redis服务器之间以及客户端与服务端之间的网络连通性和开放必要的TCP/UDP端口号对于构建健康稳定的集群至关重要。默认情况下,除了监听常规请求处理所需的6379端口外,还需要额外打开用于内部节点间通讯的高一位数端口(即7000系列),以支持gossip协议下的元数据交换和故障检测机制[^2]。 3. **初始化失败或异常退出** 在初次启动带有Cluster特性的多台机器前,应该先执行`redis-cli --cluster create ...`这样的指令来创建并初始化整个环境;倘若中途遇到错误而导致进程崩溃或者被人为终止的话,后续再尝试读取相关属性就会遭遇困难。因此建议检查日志文件确认是否存在此类状况发生,并采取相应措施恢复现场。 4. **版本兼容性差异** 使用不同版本号编译出来的二进制可执行程序混搭部署在同一套环境中也可能引发意想不到的结果。官方文档强烈推荐保持一致的基础镜像源码库标签页,从而减少不必要的麻烦。 #### 排查步骤 针对上述提到的各种可能性逐一排查: - 确认每一份配置文件里都有`cluster-enabled yes`这一项; - 测试任意两台主机间的ping可达情况,同时利用telnet验证目标地址上指定范围内的端口是否处于LISTENING状态; - 审阅/var/log/redis*.log记录寻找任何报错提示语句; - 统一各成员所依赖的核心组件及其周边生态链路版本号。 一旦解决了以上任何一个潜在隐患点,重新加载最新的设定变更并通过如下所示的方式获取当前运行概况即可恢复正常工作流: ```bash # 连接到任一节点所在的终端会话窗口内输入下面这条命令 $ redis-cli cluster nodes ``` 该操作将会返回一系列有关于整体布局的关键细节描述,比如各个分片负责的具体key区间分布、在线离线标记等重要指标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值