✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
🍎个人主页:Leo的博客 💞当前专栏: 报错及Bug ✨特色专栏: MySQL学习 🥭本文内容:关于线上问题Dockert中Redis时报错
🖥️个人小站 :个人博客,欢迎大家访问
📚个人知识库: 知识库,欢迎大家访问
原因: 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属性信息
备注:可看到redis为slave
,为从节点,默认为只读
2.4 设置redis只读属性为no
重启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,到这里问题才完全解决!