docker中的redis覆盖本地的redis

linux本地的redis是7.0.5版本
docker中的redis是6.2.6
为什么linux重启后,使用redis-cli命令,使用的是docker中的redis

img

只有关了docker使用的才是本地的redis

img

为什么默认使用的是docker中的redis

默认连接的是本地6379端口的服务,如果容器绑定的是宿主机6379那自然是连接容器的Server

  • 这篇文章:Docker部署redis 6.2.6 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: docker安装redis中的 用redis-cli连接redis服务 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    1. 用本地的redis-cli连接redis-server,直接运行 redis-cli 就可以连接
    2. 用容器内部的redis-cli连接
    docker exec -it b32029e1b32e redis-cli  #其中b32029e1b32e为容器ID,通过docker ps查询得到
    
  • 以下回答由chatgpt基于相关博客总结生成:

    解决方案:

    问题的根本在于后续启动使用的Redis版本与启动Docker容器时使用的Redis版本不一致导致。为了解决这个问题,建议执行以下步骤:

    1. 确认Docker中Redis的版本号:

    可以执行以下命令查看Docker中Redis的版本号:

    docker exec -it <容器名称> redis-cli info server | grep redis_version

    也可以进入Docker容器内部查看:

    docker exec -it <容器名称> /bin/sh

    然后执行redis-cli进入Redis客户端,输入info server查看版本号。

    确认Docker中Redis的版本号后,可以决定是升级本地Redis还是降低Docker中Redis版本号。

    1. 如果决定升级本地Redis,执行以下步骤:

    (1)安装新版本的Redis

    可以执行以下命令安装最新版本的Redis:

    sudo apt update

    sudo apt install redis-server

    (2)备份原来的Redis数据

    执行以下命令备份原来的Redis数据:

    cp /etc/redis/redis.conf /etc/redis/redis.conf.backup

    (3)使用新的Redis配置文件

    使用新版本安装后自带的配置文件,并将其中的bindprotected-mode设置为no,其他配置项则使用原来的Redis配置文件:

    sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.new

    sudo sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis/redis.conf.new

    sudo sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis/redis.conf.new

    sudo sed -i '/save/d' /etc/redis/redis.conf.new

    (4)将原来Redis的数据导入到新的Redis中

    执行以下命令将原来Redis的数据导入到新的Redis中:

    redis-cli config set stop-writes-on-bgsave-error no

    cat /var/lib/redis/dump.rdb | redis-cli -a PASSWORD --pipe

    其中PASSWORD是原来Redis中设置的密码。

    重启新的Redis:

    sudo systemctl restart redis.service

    1. 如果决定降低Docker中Redis版本号,执行以下步骤:

    (1)删除Docker中的旧版本Redis:

    docker stop <容器名称>

    docker rm <容器名称>

    (2)重新下载Docker中新的Redis版本:

    docker pull redis:<新版本号>

    (3)启动Docker容器:

    docker run -d -p 6379:6379 --name <容器名称> redis:<新版本号>

    其中<新版本号>是下载下来的Docker中新的Redis版本号。

    1. 继续使用Docker的Redis

    如果希望继续使用Docker的Redis,可以通过修改redis-cli的启动命令,使其连接本地Redis:

    redis-cli -h localhost

    这样就可以确保使用的是本地的Redis而不是Docker中的Redis了。