Docker中安装配置Redis

1. 安装Redis

通过docker search redis和docker pull redis下载redis镜像

2. 新建挂载配置文件夹

因为 redis 默认配置你会发现只能够本地连接,不能进行远程访问,使用 Redis Desktop Manager连接都会报错,因此需要手动挂载 redis 配置文件

新建data和conf两个文件夹,位置随意。本例使用上次安装nginx时使用的宿主机位置/docker/下
eg:

mkdir -p /docker/redis/data
mkdir -p /docker/redis/conf

3. 增加配置文件 redis.conf

redis官网下载相应版本的tar包,并复制其中的redis.conf(这里有个坑,redis的docker容器里面是不自带配置文件的),通过Xftp或FileZilla上传到刚才新建的redis/conf中

修改配置文件:

daemonize no。非后台模式,如果为yes会导致redis无法启动,因为后台会导致docker无任务可做而退出。(有些版本的配置文件本身就是no,检查下即可,相反,如果不使用docker安装,则需要改成yes方便后台启动)

# bind 127.0.0.1 -::1。把未注释的bind 127.0.0.1这一行注释掉,否则只能接受本机的访问请求。不写的情况下,无限制接受任何ip地址的访问。生产环境肯定要写你应用服务器的地址;服务器是需要远程访问的,所以需要将其注释掉

protected-mode no。如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应,也就是说如果设置了密码,则不用关闭保护模式

requirepass 123456 。密码

appendonly yes。开启AOF持久化

save 3600 1

save 300 100

save 60 10000。RDB持久化的快照配置

官网对持久化的建议:

  1. RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储
  2. AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.
  3. Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大
  4. 只做缓存:如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.
  5. 同时开启两种持久化方式
  6. 在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据, 因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整.
  7. RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。那要不要只使用AOF呢?
  8. 建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份), 快速重启,而且不会有AOF可能潜在的bug,留着作为一个万一的手段。
  9. 性能建议

因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。

如果使用AOF,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了。

代价,一是带来了持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。

只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上。

默认超过原大小100%大小时重写可以改到适当的数值。

4. 创建redis容器并启动

执行命令如下:

docker run --name redis -p 6379:6379 -v /docker/redis/data:/data -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes

释义如下:

  • –name:给容器起一个名
  • -p:端口映射 宿主机:容器
  • -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件

  • -v /docker/redis/data:/data:映射数据目录

  • -d:后台运行
  • redis-server /etc/redis/redis.conf:指定配置文件启动redis-server进程
  • --appendonly yes: 开启数据持久化

5. 启动成功,查看状态

通过docker ps查看启动状态,是否成功

6. 容器内部连接进行测试

执行docker exec -it redis redis-cli 命令,进入终端。
通过auth password进行登陆。

完成命令如下:

注意如果出现该错误: (error) NOAUTH Authentication required.
说明没有输入密码进行验证,请输入:auth 你的密码

7. 使用Redis Desktop Manager客户端进行连接

 8. 小结

  • 当启动容器端口报错时,可以通过netstat -lntp | grep 6379查看哪个程序在占用
  • 可以通过sudo kill 6379杀掉占用端口的程序
  • 如果使用阿里云等,请务必把相应端口打开

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值