原因: docker部署redis
,项目使用 redis 时,报错 nested exception is io.lettuce.core.RedisCommandExecutionException: READONLY ( 当前redis为只读
)
最开始我的思路是,可能当时是因为 Docker 部署的 Redis,没有什么配置文件相关的配置,导致当前 Redis 只能读不能写入。
docker exec -it redis /bin/bash
redis-cli
备注: 可看到redis为slave
,为从节点,默认为只读
重启 Redis 容器之后,发现问题解决了。
但是第二天发现仍出现了昨天同样的问题,于是觉得这种方式行不通,通过查询资料得知,在服务器安装 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 持久化,设置密码
OK,到这里问题才完全解决!