跳至主要內容

记录一次Docker部署Redis报错

Leo报错及Bug报错及Bug约 442 字大约 1 分钟

原因: docker部署redis,项目使用redis时,报错nested exception is io.lettuce.core.RedisCommandExecutionException: READONLY (当前redis为只读

1. 思路

最开始我的思路是,可能当时是因为Docker部署的Redis,没有什么配置文件相关的配置,导致当前Redis只能读不能写入。

2. 解决方式

2.1 进入容器

docker exec -it redis /bin/bash 

2.2 进入Redis客户端

redis-cli 

2.3 查看Redis属性信息

image-20230716154232437
image-20230716154232437

备注:可看到redis为slave,为从节点,默认为只读

2.4 设置redis只读属性为no

image-20230716154315510
image-20230716154315510

重启Redis容器之后,发现问题解决了。

3. 后续

但是第二天发现仍出现了昨天同样的问题,于是觉得这种方式行不通,通过查询资料得知,在服务器安装Redis则必须对外访问ip设置为0.0.0.0,并且Redis必须设置密码

于是删除Docker中的Reids镜像,重新安装Reis,并设置密码访问。

1. 拉取redis镜像
# 不指定版本号,默认拉取最新版的redis 
docker pull redis
# 指定的版本号 docker pull redis:5.0.14
# 查看镜像是否拉取成功docker images

2. 运行redis
# 带密码认证的redis,登录时需要输入验证码  appendonly(redis是否持久化)
docker run --name redis -p 6379:6379 -d --restart=always redis redis-server --appendonly yes --requirepass 123456

# 不带密码认证的redis
docker run --name redis -p 6379:6379 -d --restart=always redis redis-server --appendonly yes

这里一定要选择第一种,Redis持久化,设置密码

4. 总结

OK,到这里问题才完全解决!

公众号封面
公众号封面