# Redis ### 环境 Ubuntu 18.04 ### 安装redis ```shell apt-get install redis-server ``` ### 修改密码 ```shell vi /etc/redis/redis.conf # requirepass 你的密码 ``` ### 限制外网访问 ```shell vi /etc/redis/redis.conf # bind 127.0.0.1 ::1 ``` ### 卸载 ```shell apt-get purge --auto-remove redis-server ``` ### 修改dump.rdb文件存储路径 ```properties # 修改 /etc/redis/redis.conf dir /data/bin/redis/data # 修改 /etc/systemd/system/redis.service,添加以下文本 ReadWriteDirectories=-/data/bin/redis/data ``` ###### 注:之前只修改了 `/etc/redis/redis.conf` 下的配置,而没有修改 `/etc/systemd/system/redis.service` ,所以一直报如下错误 ```properties 2397:M 17 Sep 17:06:13.910 # Failed opening the RDB file dump.rdb (in server root dir /data/bin/redis/data) for saving: Read-only file system ``` # redis集群 1. ### 源码安装,版本redis-4.0.14 ```shell wget http://download.redis.io/releases/redis-4.0.14.tar.gz tar xzf redis-4.0.14.tar.gz cd redis-4.0.14 make ``` 2. ### 服务启动 ```shell cd redis-4.0.14 # 启动服务端 src/redis-server # 启动客户端 src/redis-cli # 优雅关闭服务 src/redis-cli shutdown save ``` 3. ### 集群部署 ```shell # 节点服务启动 /data/bin/redis/redis/src/redis-server /data/bin/redis/cluster/conf/9901/redis.conf /data/bin/redis/redis/src/redis-server /data/bin/redis/cluster/conf/9902/redis.conf /data/bin/redis/redis/src/redis-server /data/bin/redis/cluster/conf/9903/redis.conf /data/bin/redis/redis/src/redis-server /data/bin/redis/cluster/conf/9904/redis.conf /data/bin/redis/redis/src/redis-server /data/bin/redis/cluster/conf/9905/redis.conf /data/bin/redis/redis/src/redis-server /data/bin/redis/cluster/conf/9906/redis.conf # 集群启动 /data/bin/redis/redis/src/redis-trib.rb create --replicas 1 172.16.0.32:9901 172.16.0.32:9902 172.16.0.32:9903 172.16.0.32:9904 172.16.0.32:9905 172.16.0.32:9906 # 连接client /data/bin/redis/redis/src/redis-cli -c -h 172.16.0.32 -p 9901 -a wisdomCity@redis2019 # 优雅关闭节点服务 /data/bin/redis/redis/src/redis-cli -c -h 172.16.0.32 -p 9901 -a wisdomCity@redis2019 shutdown /data/bin/redis/redis/src/redis-cli -c -h 172.16.0.32 -p 9902 -a wisdomCity@redis2019 shutdown /data/bin/redis/redis/src/redis-cli -c -h 172.16.0.32 -p 9903 -a wisdomCity@redis2019 shutdown /data/bin/redis/redis/src/redis-cli -c -h 172.16.0.32 -p 9904 -a wisdomCity@redis2019 shutdown /data/bin/redis/redis/src/redis-cli -c -h 172.16.0.32 -p 9905 -a wisdomCity@redis2019 shutdown /data/bin/redis/redis/src/redis-cli -c -h 172.16.0.32 -p 9906 -a wisdomCity@redis2019 shutdown # 查看redis节点信息 ps -ef | grep redis # 带密码集群,修改以下文件,不知道路径的话可以执行查找命令 find / -name 'client.rb' # 修改 password 对应的值 vi /var/lib/gems/2.5.0/gems/redis-4.1.3/lib/redis/client.rb ``` 4. ### 集群进入fail状态的必要条件 1. 某个主节点和所有从节点全部挂掉,我们集群就进入faill状态 2. 如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态 3. 如果集群任意master挂掉,且当前master没有slave,集群进入fail状态 5. 异常处理 ``` # 登陆 /data/bin/redis/redis/src/redis-cli -c -p 9902 # set时候出现以下错误 (error) CLUSTERDOWN The cluster is down # 检查命令 /data/bin/redis/redis/src/redis-trib.rb check 127.0.0.1:9902 # 发现一下错误 [ERR] Not all 16384 slots are covered by nodes. # 执行一下修复命令(实战没用) /data/bin/redis/redis/src/redis-trib.rb fix 127.0.0.1:9902 ```