Hwj's blog - Redis
type: channel
link: https://blog.hwj.im/index.php/category/redis/
items: 使用 Docker 部署 Redis

使用 Docker 部署 Redis
type: item
date: 2022-04-16T10:28:00+08:00
description: 数据,配置等放在宿主机,docker里只运行二进制程序一 在宿主机里创建好目录 mkdir /data mkdir /data/docker mkdir /data/docker/redis cd /data/docker/redis mkdir data mkdir conf mkdir logs 二 下载并运行 redis docker run -d --restart=always \ --name redis -p 13000:6379 \ -v /data/docker/redis/data:/data \ -v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /data/docker/redis/logs:/usr/local/redis/logs \ redis \ redis-server /etc/redis/redis.conf 三 参考配置.主要是 data 目录 和 配置文件要和 (二) 对应上 # 默认redis不是以后台进程的方式启动，如果需要在后台运行，需要将这个值设置成yes # 默认no，改为yes意为以守护进程方式启动，可后台运行，除非kill进程，改为yes会使配置文件方式启动redis失败 # 以后台方式启动的时候，redis会写入默认的进程文件/var/run/redis.pid daemonize no # 默认yes，开启保护模式，限制为本地访问 protected-mode no # redis启动的进程路径 pidfile /var/run/redis.pid # 启动进程端口号，默认6379，可以改 port 6379 tcp-backlog 511 # 配置redis监听到的ip地址，可以是一个也可以多个，这里我注释掉了 #bind 127.0.0.110.254.3.42 # redis的sock路径 unixsocket /tmp/redis.sock unixsocketperm 755 # 超时时间 timeout 0 #指定TCP连接是否为长连接,"侦探"信号有server端维护。默认为0.表示禁用 tcp-keepalive 0 # 日志级别，log 等级分为4 级，debug,verbose,notice, 和warning。生产环境下一般开启notice loglevel notice # 日志文件地址 #logfile "/usr/local/redis/logs/redis.log" # 设置数据库的个数，可以使用SELECT 命令来切换数据库。默认使用的数据库是0号库。默认16个库 databases 16 # RDB方式的持久化是通过快照（snapshotting）完成的，当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上。进行快照的条件可以由用户在配置文件中自定义，由两个参数构成：时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照。RDB是Redis默认采用的持久化方式，在配置文件中已经预置了3个条件： save 900 1 # 900秒内有至少1个键被更改则进行快照 save 300 10 # 300秒内有至少10个键被更改则进行快照 save 60 10000 # 60秒内有至少10000个键被更改则进行快照 # 持久化数据存储目录 dir /data # 当持久化出现错误时，是否依然继续进行工作，是否终止所有的客户端write请求。默认设置"yes"表示终止，一旦snapshot数据保存故障，那么此server为只读服务。如果为"no"，那么此次snapshot将失败，但下一次snapshot不会受到影响，不过如果出现故障,数据只能恢复到"最近一个成功点" stop-writes-on-bgsave-error no # 在进行数据镜像备份时，是否启用rdb文件压缩手段，默认为yes。压缩可能需要额外的cpu开支，不过这能够有效的减小rdb文件的大，有利于存储/备份/传输/数据恢复 rdbcompression yes # checksum文件检测，读取写入的时候rdb文件checksum，会损失一些性能 rdbchecksum yes #镜像备份文件的文件名，默认为dump.rdb dbfilename dump.rdb #当主master服务器挂机或主从复制在进行时，是否依然可以允许客户访问可能过期的数据。在"yes"情况下,slave继续向客户端提供只读服务,有可能此时的数据已经过期；在"no"情况下，任何向此server发送的数据请求服务(包括客户端和此server的slave)都将被告知"error" s…