小言_互联网的博客

Redis安装踩坑大全(不管你踩没踩过,反正我全踩了)

349人阅读  评论(0)

写在最前:服务器挖矿亲🐴biss

最近开始学redis了,在安装、配置、使用过程中遇到了不少的坑,在这里记录并分享一下解决办法

Redis安装

  1. 通过官网下载Redis的压缩包 https://redis.io/download

    redis目前的最新版本是5.X,我下载的是4.0.14版本的,如果有需要4.0.14版本的redis压缩包可以在评论中留言

  2. 在安装redis之前需要先安装gcc,目的是为了编译文件

    yum install gcc-c++ 
    
  3. 将压缩包放到服务器(或者虚拟机)中,由于我使用的华为云服务器,所以我把压缩包放到了 /root/software目录下,然后通过指令解压压缩包

    cd /root/software
    tar -zxvf redis-4.0.14.tar.gz
    

  4. 把解压的文件copy到 /usr/local/src 目录下,同时将文件夹名字改为redis

    cp -r /root/software/redis-4.0.14 /usr/local/src/
    改名
    cd /usr/local/src/
    mv redis-4.0.14  redis
    
  5. 打开 /usr/local/src/redis/deps 进行编译依赖项

    cd /usr/local/src/redis/deps
    make hiredis lua jemalloc linenoise
    
  6. 打开 /usr/local/src/redis 进行编译

    cd /usr/local/src/redis
    make
    
  7. 在上面的Redis目录安装把它安装到 /usr/local/redis 里面

    mkdir /usr/local/redis
    make install PREFIX=/usr/local/redis
    


    看到图中的提示说明安装成功

  8. 验证安装是否成功

    cd /usr/local/redis/bin
    ls
    


    redis-benchmark:redis性能测试工具
    redis-check-aof:检查aof日志的工具
    redis-check-dump:检查rdb日志的工具
    redis-cli:连接用的客户端
    redis-server:redis服务进程

    看到如图的启动文件就可以了

    到这里redis已经安装完成了,不过我多做了一步,将redis的配置文件单独放到了一个文件夹中

    mkdir /root/myredis
    cp /usr/local/src/redis/redis.conf /root/myredis
    
  9. 启动Redis

    cd /usr/local/redis/bin
    ./redis-server /root/myredis/redis.conf 
    

    注:默认情况,Redis不是在后台运行,我们需要把redis放在后台运行

    vi /root/myredis/redis.conf
    

    之后再次启动redis并且查看进程

    # 查看进程
    ps -ef|grep redis
    


    可以看到在6379端口号已启动了redis

  10. 客户端相关操作

    # 连接
    cd /usr/local/redis/bin
    ./redis-cli  默认是-h 127.0.0.1 -p 6379  
    # 查看redis是否通,如果返回PONG说明通了
    ping
    # 停止redis
    cd /usr/local/redis/bin
    ./redis-cli shutdown
    #或者
    pkill redis-server
    # 客户端内停止redis
    shutdown
    # 退出
    quit
    

  11. redis设置密码

    config set requirepass 密码
    


    注:如果你是云服务器的话,redis一定要设置密码,而且密码最好是字母+数字+英文特殊符号(这里一定要是英文的特殊符号,不然后期SpringBoot连接redis会连接不上),不然你的服务器很容易被别人挖矿当成肉鸡用,我一天之内被挖了两次,服务器也重置了两次,在这里祝矿工Ⅳ个亲🐴

Redis高可用高并发集群搭建与配置

我使用了7000、7001、7002、7003、7004、7005六个端口搭建集群,三个主机,三个从机,我先把可能遇到的坑写在这里

错误一:sorry, can’t connect to node

解决方法:
1、确保你的六个redis是已经启动的,可以通过 ps -ef | grep redis 命令查看

2、修改redis几个节点里面的配置文件,将 protected-mode yes 改为 protected-mode no。关闭保护模式。同时还有 bin 127.0.0.1 修改为 0.0.0.0 或者连接 redis 的主机 ip

3、开放端口,由于我是使用的7000、7001、7002、7003、7004、7005端口,然后由于redis内部总线端口通信使用特殊协议,会使用 开放端口+10000 这个端口,所以我们还需要开放17000、17001、17002、17003、17004、17005端口,如果你是云服务器的话,不要忘记在控制台安全组中开放相应端口

# 开放端口命令
firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=7004/tcp --permanent
firewall-cmd --zone=public --add-port=7005/tcp --permanent
firewall-cmd --zone=public --add-port=17000/tcp --permanent
firewall-cmd --zone=public --add-port=17001/tcp --permanent
firewall-cmd --zone=public --add-port=17002/tcp --permanent
firewall-cmd --zone=public --add-port=17003/tcp --permanent
firewall-cmd --zone=public --add-port=17004/tcp --permanent
firewall-cmd --zone=public --add-port=17005/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看哪些端口是开启的
firewall-cmd --list-port

错误二:创建集群时一直处于"Waiting for the cluster to join…"的状态

这个错误是因为端口问题引起的,解决方法参考错误一

错误三:Node 121.36.17.228:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解决方法:
1、将每个节点下aof、rdb、nodes.conf本地备份文件删除;

2、172.168.63.201:7001> flushdb #清空当前数据库(可省略)

3、再次执行脚本,正常情况下成功执行

错误四:ERR Slot 0 is already busy (Redis::CommandError)

错误提示是说:slot插槽被占用了、这是因为 搭建集群前时,以前redis的旧数据和配置信息没有清理干净。

解决方法:用 redis-cli 登录到每个节点执行 flushall 和 cluster reset
之后再次执行创建集群命令

redis集群搭建过程:

  1. 在 /root 路径下新建文件夹 redis-cluster,同时将 redis-server 和 redis-cli 拷贝进去

    cd /root
    mkdir redis-cluster
    
    cp /usr/local/redis/bin/redis-server  /root/redis-cluster/redis-server
    cp /usr/local/redis/bin/redis-cli  /rootredis-cluster/redis-cli
    
  2. 准备六个redis配置文件

    cd /root/redis-cluster
    mkdir redis-1
    mkdir redis-2
    mkdir redis-3
    mkdir redis-4
    mkdir redis-5
    mkdir redis-6
    
    cp /root/myredis/redis.conf /root/redis-cluster/redis-1/redis.conf
    cp /root/myredis/redis.conf /root/redis-cluster/redis-2/redis.conf
    cp /root/myredis/redis.conf /root/redis-cluster/redis-3/redis.conf
    cp /root/myredis/redis.conf /root/redis-cluster/redis-4/redis.conf
    cp /root/myredis/redis.conf /root/redis-cluster/redis-5/redis.conf
    cp /root/myredis/redis.conf /root/redis-cluster/redis-6/redis.conf
    
  3. 修改新准备的六个redis配置文件

    # Redis-1文件夹中redis.conf配置文件修改
    bind 0.0.0.0                    69行
    protected-mode no				88行
    port 7000                       92行
    daemonize yes                   136行
    # 打开aof 持久化
    appendonly yes                  672行 
    # 开启集群
    cluster-enabled yes             814行
    # 集群的配置文件,该文件自动生成   
    cluster-config-file nodes-7000.conf  822行
    # 集群的超时时间
    cluster-node-timeout 5000         828行
    

    其他五个配置文件除了端口号之外其他和第一个配置文件修改相同,例如

    # Redis-2文件夹中redis.conf配置文件修改
    bind 0.0.0.0                    69行
    protected-mode no				88行
    port 7001                       92行
    daemonize yes                   136行
    # 打开aof 持久化
    appendonly yes                  672行 
    # 开启集群
    cluster-enabled yes             814行
    # 集群的配置文件,该文件自动生成   
    cluster-config-file nodes-7001.conf  822行
    # 集群的超时时间
    cluster-node-timeout 5000         828行
    
  4. 同时启动所有的redis

    cd /root/redis-cluster
    ./redis-server /root/redis-cluster/redis-1/redis.conf
    ./redis-server /root/redis-cluster/redis-2/redis.conf
    ./redis-server /root/redis-cluster/redis-3/redis.conf
    ./redis-server /root/redis-cluster/redis-4/redis.conf
    ./redis-server /root/redis-cluster/redis-5/redis.conf
    ./redis-server /root/redis-cluster/redis-6/redis.conf
    
  5. 使用docker 下载redis-trib的镜像运行

    # 安装Docker
    yum install docker
    # 启动docker
    systemctl start docker
    # A: 下载镜像
    docker pull inem0o/redis-trib
    

    之后运行创建集群命令(192.168.120.129是服务器或者虚拟机密码,记得更换成你自己的)

    docker run -it --net host inem0o/redis-trib create --replicas 1 192.168.120.129:7000 192.168.120.129:7001 192.168.120.129:7002 192.168.120.129:7003 192.168.120.129:7004 192.168.120.129:7005
    

    注:集群连接代码必须要在同一行

  6. 集群设置密码
    如果你需要使用外部主机连接集群,这里最好要设置密码,而且要设置强密码(字母+数字+英文特殊符号),不然你会被挖矿工疯狂挖矿,严重的还会导致你的服务器ip被封禁(挖矿工没🐴就完了)

    # 进入各个实例进行设置    -c 表示连接集群
    ./redis-cli -c -p 7000 
    config set masterauth 密码
    config set requirepass 密码
    config rewrite 
    

    之后分别使用 ./redis-cli -c -p 7001,./redis-cli -c -p 7002 … 给每个节点设置上密码。

    注:各个节点密码都必须一致,否则Redirected就会失败, 推荐这种方式,这种方式可以在redis启动的时候把密码写入到redis.conf里面去,且不用重启redis

  7. 测试集群环境

    # 连接7000
    ./redis-cli -c -p 7000 -a 密码
    


    可以发现插入的数据会存放到不同的redis中,到此集群搭建完成


转载:https://blog.csdn.net/qq_44039966/article/details/105150370
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场