在日常的测试环境中,我们一般需要使用docker快速部署某个组件方便我们进行测试,这里我们介绍下如何使用docker快速部署redis实例。具体过程如下:
1、创建目录
#在服务器上创建redis的存储目录 mkdir -p /home/pubserver/redis/conf
2、创建配置文件
#在当前目录下创建一个redis.conf的文件 touch redis.conf
3、填充配置文件
把下面的内容粘贴到这个redis.conf文件中去
# bind 192.168.1.100 10.0.0.1 # 表示注释(该行不生效)。 #bind 用于指定 Redis 监听的网络接口地址(即允许哪些 IP 的客户端连接)。 #这里注释掉表示:不限制特定 IP,Redis 默认监听服务器上所有可用的网络接口(所有 IP 均可连接,除非受保护模式限制)。 # bind 127.0.0.1 ::1 #同样是注释,127.0.0.1 是 IPv4 本地回环地址(仅本机可连接),::1 是 IPv6 本地回环地址。 #注释掉表示:Redis 不仅允许本地连接,还允许远程 IP 连接(需配合保护模式配置)。 #bind 127.0.0.1 #注释掉的单行本地回环地址绑定。若生效,Redis 仅允许本机(127.0.0.1)连接,拒绝所有远程请求。 protected-mode no #保护模式开关:no 表示关闭保护模式:允许外部网络连接(即使未绑定特定 IP 且未设置密码也能连接,生产环境不建议关闭)。 #若开启(yes),则仅允许本地连接,或需同时满足 “绑定了特定 IP” 和 “设置了密码” 才能远程连接。 port 6379 #指定 Redis 服务监听的端口号,默认是 6379(Redis 官方默认端口)。 tcp-backlog 511 #TCP 连接的 “待处理队列长度”:当客户端发起连接请求(三次握手完成后),会先进入该队列等待 Redis 处理。 #511 是默认值,实际生效值受系统内核参数(如net.core.somaxconn)限制。 requirepass jdqGfJB0EP #设置 Redis 客户端连接的密码:客户端需通过 AUTH 123456 命令验证后才能操作 Redis(这里密码为123456,生产环境建议使用复杂密码)。 timeout 0 #客户端空闲超时时间(单位:秒):若客户端超过该时间未发送任何命令,Redis 会主动关闭连接。 #0 表示不超时(客户端可一直保持连接)。 tcp-keepalive 300 #TCP 保活机制(单位:秒):Redis 每 300 秒向客户端发送一次 TCP 保活探针,检测客户端是否仍在线(避免无效连接长期占用资源)。 daemonize no #是否以守护进程(后台)模式运行: #no 表示在前台运行(日志直接输出到终端,关闭终端则 Redis 进程终止)。 #yes 表示在后台运行(需配合pidfile记录进程 ID)。 supervised no #指定 Redis 是否由系统管理进程(如 systemd、upstart)监控: #no 表示不依赖任何系统管理进程。 #若为systemd,则 Redis 会配合 systemd 的进程管理机制运行。 pidfile /var/run/redis_6379.pid #当daemonize yes(守护进程模式)时,Redis 会将自身进程 ID(PID)写入该文件,用于系统管理(如停止服务时通过 PID 定位进程)。 loglevel notice #日志级别:控制日志输出的详细程度,可选值(从低到高): #debug(调试信息,最详细)、verbose(详细信息)、notice(通知 + 警告 + 错误)、warning(警告 + 错误)、error(仅错误)。 #这里notice表示记录重要通知、警告和错误信息。 logfile "" #日志文件路径: #空字符串("")表示日志输出到标准输出(终端)。 #若为守护进程模式,建议指定文件路径(如/var/log/redis.log),避免日志丢失。 databases 16 #设置 Redis 默认创建的数据库数量:客户端可通过 SELECT <dbid> 命令切换数据库(编号从 0 到 29,默认 16 个库)。 always-show-logo yes #Redis 启动时是否显示 Logo:yes 表示显示 Redis 的 ASCII 艺术 Logo,no 表示不显示。 save 900 1 #RDB 持久化触发条件:900 秒(15 分钟)内有至少 1 个键被修改,则自动执行bgsave生成 RDB 快照。 save 300 10 #RDB 触发条件:300 秒(5 分钟)内有至少 10 个键被修改,自动生成 RDB 快照。 save 60 10000 #RDB 触发条件:60 秒(1 分钟)内有至少 10000 个键被修改,自动生成 RDB 快照。 stop-writes-on-bgsave-error yes #当 RDB 持久化(bgsave)失败时,是否停止 Redis 接收写入操作: #yes 表示停止(防止数据丢失,强制人工处理错误)。 #no 表示继续接收写入(可能导致数据无法持久化,有风险)。 rdbcompression yes #是否对 RDB 文件进行压缩: #yes 表示压缩(节省磁盘空间,但消耗 CPU)。 #no 表示不压缩(节省 CPU,但文件更大)。 rdbchecksum yes #是否在 RDB 文件末尾添加校验和: #yes 表示添加(用于验证 RDB 文件完整性,增加少量 CPU 消耗)。 #no 表示不添加(节省 CPU,但无法检测文件损坏)。 dbfilename dump.rdb #RDB 持久化文件的名称(默认dump.rdb),存储路径由dir参数指定。 dir ./ #RDB 和 AOF 文件的存储目录:./ 表示 Redis 启动时的当前工作目录(建议指定绝对路径,如/var/lib/redis)。 replica-serve-stale-data yes #从节点(replica)与主节点(master)断开连接时,是否继续响应客户端请求: #yes 表示继续(返回旧数据,保证可用性)。 #no 表示仅响应INFO和SLAVEOF命令,拒绝其他请求(保证数据一致性)。 replica-read-only yes #从节点是否为只读模式:yes 表示从节点不能执行写入操作(仅主节点可写,保证主从数据一致)。 repl-diskless-sync no #是否启用 “无盘复制”(主节点向从节点同步数据时不写入磁盘): #no 表示不启用(传统方式:主节点生成 RDB 文件写入磁盘,再发送给从节点)。 #yes 表示启用(主节点直接通过网络发送 RDB 数据给从节点,节省磁盘 IO,适合网络快的场景)。 repl-disable-tcp-nodelay no #是否禁用 TCP_NODELAY 选项(影响主从数据同步的延迟): #no 表示不禁用(数据立即发送,延迟低但带宽消耗高)。 #yes 表示禁用(数据会合并成大包发送,带宽低但延迟高)。 replica-priority 100 #从节点的优先级(用于主从切换时选举新主节点): #值越小优先级越高(0 表示该从节点不能成为主节点)。 lazyfree-lazy-eviction no #内存满时驱逐键(根据 maxmemory-policy)是否使用 “惰性删除”(后台异步删除,不阻塞主线程):no 表示立即删除(可能阻塞)。 lazyfree-lazy-expire no #键过期时是否使用惰性删除:no 表示立即删除(可能阻塞)。 lazyfree-lazy-server-del no #执行DEL命令删除大量数据时是否使用惰性删除:no 表示立即删除(可能阻塞)。 replica-lazy-flush no #从节点同步主节点数据前,清空自身数据是否使用惰性删除:no 表示立即清空(可能阻塞)。 appendonly yes #是否启用 AOF(Append Only File)持久化: #yes 表示启用(记录所有写命令到 AOF 文件,用于恢复数据,比 RDB 更完整)。 #no 表示禁用(仅使用 RDB 持久化)。 appendfilename "appendonly.aof" #AOF 文件的名称(默认appendonly.aof),存储路径由dir参数指定。 no-appendfsync-on-rewrite no #AOF 重写期间是否禁用appendfsync(控制 AOF 文件刷盘策略): #no 表示不禁用(每写入命令都刷盘,保证数据安全,但影响性能)。 #yes 表示禁用(重写期间不刷盘,提升性能,但可能丢失这段时间的数据)。 auto-aof-rewrite-percentage 100 #AOF 自动重写的触发条件之一:当 AOF 文件大小超过 “上次重写后大小” 的 100%(即翻倍)时,触发重写(重写是为了压缩 AOF 文件,去除冗余命令)。 auto-aof-rewrite-min-size 64mb #AOF 自动重写的触发条件之二:AOF 文件大小至少达到 64MB 时,才可能触发重写(避免小文件频繁重写)。 aof-load-truncated yes #当 AOF 文件末尾被截断(如 Redis 崩溃导致),加载时是否继续: #yes 表示继续加载(忽略截断部分,记录警告)。 #no 表示拒绝加载(需手动修复 AOF 文件)。 aof-use-rdb-preamble yes #是否启用 “混合持久化”:yes 表示 AOF 文件开头包含 RDB 格式数据,后续是增量 AOF 命令(结合 RDB 加载快和 AOF 数据完整的优点)。 lua-time-limit 5000 #Lua 脚本的最大执行时间(单位:毫秒):超过 5000 毫秒(5 秒)的脚本会被强制终止,避免阻塞 Redis。 slowlog-max-len 128 #慢查询日志的最大条目数:记录执行时间超过slowlog-log-slower-than(默认 10 毫秒)的命令,超过 128 条时会删除最旧的条目。 notify-keyspace-events "" #键空间通知配置:空字符串表示禁用通知(不发送任何事件)。若需开启(如键过期通知),可设置为特定字符(如"Ex"表示键过期事件)。 hash-max-ziplist-entries 512 #哈希类型使用 “压缩列表(ziplist)” 存储的条件:当哈希的字段数≤512 时,用 ziplist(节省空间);否则转为哈希表(hashtable)。 hash-max-ziplist-value 64 #哈希类型使用 ziplist 的补充条件:每个字段和值的长度≤64 字节(否则转为哈希表)。 list-max-ziplist-size -2 #列表类型使用 ziplist 存储的最大内存:-2 表示以字节为单位,值为 8KB(超过则转为双向链表 linkedlist)。 list-compress-depth 0 #列表的压缩深度:0 表示不压缩任何节点;1 表示压缩表头和表尾各 1 个节点;2 表示各 2 个,以此类推(节省空间)。 set-max-intset-entries 512 #集合类型使用 “整数集合(intset)” 存储的条件:元素全为整数且数量≤512 时,用 intset(节省空间);否则转为哈希表。 zset-max-ziplist-entries 128 #有序集合使用 ziplist 存储的条件:元素数≤128 时,用 ziplist;否则转为跳表(skiplist)。 zset-max-ziplist-value 64 #有序集合使用 ziplist 的补充条件:每个元素的成员(member)长度≤64 字节(否则转为跳表)。 hll-sparse-max-bytes 3000 #HyperLogLog 类型(用于基数统计)的稀疏表示最大字节数:超过 3000 字节时转为稠密表示(平衡空间和性能)。 stream-node-max-bytes 4096 #流(stream)类型中每个节点的最大字节数:超过 4096 字节时拆分节点(优化流的存储和查询)。 stream-node-max-entries 100 #流类型中每个节点的最大条目数:超过 100 条时拆分节点。 activerehashing yes #是否启用主动重哈希:yes 表示 Redis 定期对哈希表进行重哈希(优化哈希表性能,避免查询效率下降)。 hz 10 #Redis 内部定时任务的执行频率(单位:赫兹):10 表示每秒执行 10 次,影响过期键删除、客户端超时检测等(值越高,响应越及时,但 CPU 消耗越高)。 dynamic-hz yes #是否动态调整hz值:yes 表示 Redis 空闲时降低hz(节省 CPU),繁忙时提高hz(保证响应速度)。 aof-rewrite-incremental-fsync yes #AOF 重写时是否启用增量 fsync:yes 表示每写入 32MB 数据就刷盘一次(避免大量数据同时刷盘导致延迟)。 rdb-save-incremental-fsync yes #RDB 保存时是否启用增量 fsync:yes 表示每写入 32MB 数据就刷盘一次(优化 RDB 持久化的性能)。
备注:
1、如果有实际需求的话,需要对这里的配置文件进行优化调整,我这里仅是演示测试环境的redis搭建,所以暂时不改动其他的信息
4、使用docker命令启动redis
#创建docker实例 docker run -p 6379:6379 --name redis --restart=always -v /home/pubserver/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/pubserver/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass jdqGfJB0EP
备注:
1、这里我们给redis设置了密码,在redis.conf里面也是使用的这个密码
创建完成之后就可以看到redis启动起来了
5、测试redis
接下来进入到这个redis容器,使用redis-cli命令进行验证
看到上面的图就代表我们这里的redis是部署成功的。
还没有评论,来说两句吧...