Linux安装redis及redis集群

先安装运行环境

  1. 安装gcc环境

    yum install gcc-c++


  • 安装Tcl TCL(Tool Command Language)工具脚本语言,是Linux内的一种语言包。,这里需要先安装tcl。

    wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
    tar -zxzf tcl8.6.1-src.tar.gz
    sudo mv tcl8.6.1 /usr/local/
    cd /usr/local/
    cd tcl8.6.1/unix/
    ./configure
    make
    make install
    

安装redis

  • 1下载

    wget -q http://download.redis.io/releases/redis-4.0.1.tar.gz
    
  • 2解压

    tar -zxvf redis-4.0.1.tar.gz
    
  • 3指定安装目录

    sudo mv redis-4.0.1 /usr/local/
    
  • 4切换目录

    cd /usr/local/redis-4.0.1/
    
  • 5 make test

    make test
    
  • 6 make install

    make install
    

自定义目录安装

    命令:进入redis的解压完毕的根目录下,
    执行命令: make install PREFIX=/usr/local/redis

    可以通过

    ps -ef | grep -i redis
    ps -aux|grep redis

    来查看是否启动
  • 5、关闭redis

     ./bin/redis-cli shutdown
    

redis设置开机启动

    创建存储redis文件目录
    mkdir -p /usr/local/redis
    复制redis-server redis-cli到新建立的文件夹
    cp ./redis-server /usr/local/redis/
    cp ./redis-cli /usr/local/redis/
    复制redis的配置文件
    cd ..
    cp redis.conf /usr/local/redis/
    编辑配置文件
    cd /usr/local/redis/
    vim redis.conf

    添加开机启动服务
    vim /etc/systemd/system/redis-server.service

    [Unit]
    Description=The redis-server Process Manager
    After=syslog.target network.target

    [Service]
    Type=simple
    PIDFile=/var/run/redis_6379.pid
    ExecStart=/usr/local/redis/redis-server /usr/local/redis/redis.conf         
    ExecReload=/bin/kill -USR2 $MAINPID
    ExecStop=/bin/kill -SIGINT $MAINPID

    [Install]
    WantedBy=multi-user.target
    设置开机启动

    systemctl daemon-reload 
    systemctl start redis-server.service 
    systemctl enable redis-server.service
    检查是否安装成功

    查看服务是否启动
    lsof -i:6379

    创建redis命令软连接
    ln -s /usr/local/redis/redis-cli /usr/bin/redis

一、安装snmp

yum install -y net-snmp net-snmp-utils

安装redis集群

  • 创建集群

    ./redis-trib.rb create --replicas 1 
    192.168.3.155:7001 
    192.168.3.155:7002 
    192.168.3.155:7003 
    192.168.3.155:7004 
    192.168.3.155:7005 
    192.168.3.155:7006
    
    ./redis-trib.rb create --replicas 1 192.168.3.155:7001 -a java123 192.168.3.155:7002 -a java123 192.168.3.155:7003 -a java123 192.168.3.155:7004 -a java123 192.168.3.155:7005 -a java123 192.168.3.155:7006 -a java123
    
    
    关闭集群  
    pkill -9 redis
    
    Redis槽分配
    0-5000
    5001-10000
    10001-16383
    或
    0-2730
    2731-5461
    5462-8191
    8192-10921
    10922-13651
    13652-16383
    
    修改redis.conf文件
    port 7001  
    daemonize yes  
    cluster-enabled yes  
    cluster-config-file nodes.conf  
    cluster-node-timeout 5000  
    appendonly yes 
    

常见错误及解决方法

错误详细如下:

/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in
require': cannot load such file -- Redis (LoadError) from
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in
require’ from /usr/local/bin/redis-trib.rb:25:in `’

问题来源这个命令:./redis-trib.rb create –replicas 1 192.168.3.155:7001
192.168.3.155:7002 192.168.3.155:7003 192.168.3.155:7004 192.168.3.155:7005 192.168.3.155:7006

解决方法如下 : [root@10-13-165-107 redis]# gem install redis

ERR]Node XXXXXX is not empty. Either the node already knows other
nodes (check withCLUSTER NODES) or contains some key in database 0
解决办法是将每一个redis下删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb
还需要进入每一个redis清除数据: [root@localhost redis-cluster]# redis01/redis-cli
-h 192.168.181.132 -p 7001 -c
192.168.181.132:7006> FLUSHALL 总共6个redis清除后重复(1)

若还是有问题: [root@localhost redis-cluster]# ./redis-trib.rb check
192.168.181.132:7001 正常状态下应该是:

如果不是如上,可以修复这个端口 [root@localhost redis-cluster]# ./redis-trib.rb fix
192.168.181.132:7001 请检查这6个端口并修复!!!

[ERR] Node 172.168.63.202:7001 is not empty. Either the nodealready
knows other nodes (check with CLUSTER NODES) or contains some

的问题

解决办法:

1)将每个节点下aof、rdb、nodes.conf本地备份文件删除; 2)172.168.63.201:7001> flushdb
#清空当前数据库(可省略) 3)之后再执行脚本,成功执行;

这里解释一下dump.rdb文件:

dump.rdb是由Redis服务器自动生成的 默认情况下 每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”的文件里,这个持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库状态恢复到上一次做SNAPSHOT时的状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值