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

本文详细介绍了Redis的安装步骤及常见问题解决方案,包括在Linux环境下安装gcc、解压及编译Redis源码,以及如何设置密码和后台运行。此外,还深入探讨了Redis集群的搭建过程,包括配置文件修改、端口开放、集群创建命令及常见错误解决。
摘要由CSDN通过智能技术生成

写在最前:服务器挖矿亲🐴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中,到此集群搭建完成

当你尝试在Linux安装Redis时遇到"release"这个致命错误,这通常是指在编译过程中遇到了发行版相关的配置问题或者是依赖库的问题。Redis是一个内存数据库系统,安装过程可能会因为缺少必要的软件包、配置文件设置不正确,或是版本兼容性问题而失败。 以下是一些可能导致错误的原因及解决办法: 1. **依赖缺失**:确保已经安装了所有必要的构建工具,如gcc,make等。你可以通过运行`sudo apt-get install build-essential` (对于Debian系) 或 `sudo yum install gcc make` (对于CentOS/RHEL系) 来检查和安装。 2. **源码版本与系统不兼容**:检查你下载的Redis源码是否适合你的Linux发行版。例如,某些较旧的系统可能需要特定版本的编译选项。确保你在官方文档中查阅正确的编译步骤。 3. **错误的配置**:在编译前,确认你设置了合适的编译选项,比如`--prefix`用于指定Redis安装位置。如果误操作可能导致错误,试着删除之前的编译目录并从头开始。 4. **权限问题**:在一些情况下,安装过程可能需要root权限。如果你不是root用户,可以尝试使用`sudo`命令。 5. **已存在冲突的软件**:确保有其他Redis实例正在运行,或者尝试卸载已存在的Redis版本再进行安装。 如果以上步骤都无法解决问题,建议查看详细的错误信息,并搜索相关的技术论坛或社区寻找解决方案,或者直接联系Redis项目的官方支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值