linux环境docker安装redis(AOF和RDB持久化)

文章介绍了如何使用Docker部署Redis服务,包括拉取镜像、设置默认空密码、指定容器名称、后台运行以及端口映射。详细步骤涉及设置密码、挂载配置文件以实现自定义配置启动,特别是关于Redis的持久化设置,包括RDB和AOF。在遇到AOF持久化未生效问题时,通过命令行参数解决。
摘要由CSDN通过智能技术生成

1:第一步

docker pull redis

2:第二步,默认密码为空,–name表示指定容器别名,-d表示在后台运行

docker run --name hdxredis -d -p 6379:6379  redis

如果需要设置密码如下

docker run -itd --name hdxredis  -p 6379:6379 redis --requirepass 123456

3.1: 挂载redis的配置文件,以配置文件方式启动redis容器

建立放置配置文件的文件夹的,文件夹的路径根据自己的情况选择

mkdir -p /home/redis/myredis

3.2:在3.1的文件夹下在建立一个名为data的文件夹

mkdir -p /home/redis/myredis/data

4:启动容器(redis-server /etc/redis/redis.con,指定使用的配置文件)

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass 123456

启动命令讲解

--restart=always 代表总是开机启动
--log-opt 代表日志方面
-p 6379:6379 代表将6379端口挂载出去
--name myredis 代表给容器取一个名字
-v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 代表将自己上传的配置文件和redis的配置文件挂载在一起
-v /home/redis/myredis/data:/data 将数据挂载在一起
-d redis 代表后台启动
redis-server /etc/redis/redis.conf 代表以配置文件启动redis,加载容器内的conf文件,因为文件挂载,最终找到上面自定义的配置文件
--appendonly yes 开启aof持久化
--requirepass 123456 设置密码,docker内部连接的话,此密码没有效,用于对外开放

redis默认配置文件1

# Redis 服务器配置文件示例

# 监听地址和端口
bind 0.0.0.0
port 6379

# 日志文件路径
logfile "/etc/redis.log"

# 数据库数量
databases 16

# 是否后台运行,如果是docker部署必须要设置daemonize no,不然启动会一致失败,或者重启,如果是单独windows和linux部署设置为yes
daemonize no

# 保存快照的频率,900秒内有1个修改则进行快照
save 900 1
save 300 10
save 60 10000

# AOF 持久化配置
appendonly no
appendfilename "appendonly.aof"

# 设置最大内存限制
maxmemory 0
maxmemory-policy noeviction

# 客户端超时时间
timeout 0

# 是否开启集群模式
cluster-enabled no

# 是否开启数据校验和
rdbchecksum yes

# 是否开启虚拟内存,如果使用的是docker部署需要注释这行,不然启动报错
vm-enabled no

# 是否开启慢查询日志
slowlog-log-slower-than 10000
slowlog-max-len 128

# 是否开启监视
# monitor-enabled no

# 是否开启多线程
# io-threads 4

# 客户端输出缓冲区大小
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

# 安全性设置密码
requirepass foobared

redis默认配置文件2(推荐使用这种)

# 让外部设备连接
bind 0.0.0.0
port 6379
 
# 关闭保护模式
protected-mode no
 
# 关闭后台运行(避坑提示,因为docker运行就已经有后台守护,改为yes会启动不了redis)
daemonize no
 
# 设置日志文件路径(避坑提示,此路径为容器内的路径,切勿当成宿主路径)
logfile "/etc/redis.log"
 
# 设置主服务器密码(为以后redis集群做基础,无集群需求可以不添加)
masterauth 123456
 
# 设置redis密码(如果以后有哨兵集群需求,主与从的redis密码必须一致)
requirepass 123456

注意:在挂载redis配置文件一直不生效的时候,可以先不挂载配置文件,启动redis,看看默认的redis配置文件的路径在哪里,如果redis容器没有配置文件,那就需要指定启动redis的配置文件,加上 redis-server /etc/redis/redis.conf,如下完整的启动容器命令

注意:挂载的配置文件和日志文件要赋予权限

#例如
chmod 777 /home/redis/myredis/myredis.conf 
chmod 777 /home/redis/log/redis.log

注意:容器的日记文件路径需要和配置文件的redis.conf设置的日志文件一致

-v /home/redis/log/redis.log:/etc/redis.log

注意:挂载日志后,使用命令docker logs <容器id>打印控制台查看redis日志就全部为空了,日志都输出到日志文件,只能通过日志文件查看了

启动容器挂载日志方式一

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -v /home/redis/log/redis.log:/etc/redis.log -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass 123456

在 Redis 中,AOF(Append-Only File)和 RDB(Redis DataBase)是两种持久化方式,用于在服务器重启时保持数据的持久性,查看redis是否开启了持久化

1.AOF 以追加写入的方式记录所有写操作(包括写入、更新、删除)的日志,记录的格式是 Redis 协议的命令。因此,AOF 文> > 件包含了可以重放来重建数据集的完整操作日志。
优点:
可靠性高:AOF 文件记录了每个写操作,因此在服务器崩溃时,可以通过重放 AOF 文件来恢复数据。
可读性:AOF 文件以文本方式记录操作,相对容易理解和调试。
部分恢复:AOF 文件可以根据配置定期重写,去除多余的操作,减少文件大小。
缺点:
文件体积:AOF 文件通常比 RDB 文件大,因为它记录了完整的操作历史。
恢复时间:AOF 文件恢复速度可能比 RDB 慢,特别是文件较大时。
适用场景:
需要高可靠性和实时性的场景,可以接受略高的存储占用和性能损耗。
2. RDB(Redis DataBase)
工作原理:
RDB 是定期(根据配置)将 Redis 内存数据以快照的方式写入磁盘,生成一个二进制的 RDB 文件。该文件包含了某个时间点上 Redis 数据的快照。
优点:
快速:RDB 文件是二进制格式的数据快照,恢复速度通常比 AOF 快。
紧凑:相比 AOF,RDB 文件体积较小,适合用于备份和恢复。
缺点
数据丢失:如果 Redis 未能定期保存 RDB 文件,会丢失最后一次持久化后的数据。
可读性差:RDB 文件是二进制格式,不易人工阅读和编辑。

发送 CONFIG GET save 命令,它将返回一个包含持久化配置信息的列表

1:1>config get save
 1)  "save"
 2)  "3600 1 300 100 60 10000"
1:1>config get appendonly
 1)  "appendonly"
 2)  "no"
1:1>

如上表示开启了save持久化即使RDB,没有开启AOF持久化

遇到的问题,在redis.conf文件里面设置的appendonly yes,重启redis但是AOF持久化没有生效,通过 docker run -itd --name hdxredis -p 6379:6379 redis --requirepass 123456 --appendonly yes就生效了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值