标签:格式 磁盘利用率 文件拷贝 窗口 sync 除了 根目录 行记录 成功
redis 多端口启动
redis-server --port 6379
redis-server --port 6380
redis 客户端连接多端口
redis-cli -p 6379
redis-cli -p 6380
查看默认配置文件,过滤注释与空行
cat redis.conf | grep -v "#" | grep -v "^$"
复制配置文件到另一个文件
cat redis.conf | grep -v "#" | grep -v "^$" > redis-6379.conf
修改 redis-6379.conf 配置文件注释,在 redis 根目录下新建 conf 文件夹,用来管理 redis 配置文件
port 6379 # redis-server 启动端口号
daemonize yes # 以守护进程方式启动,使用本启动方式,redis将以服务的形式存在,日志将不再打印到命令窗口中
logfile "6379.log" # 日志文件名
dir /redis-4.0.0/data # 日志文件、持久化文件等保存路径,自行创建
利用配置文件启动
redis-server conf/redis-6379.conf
查询是否启动成功
ps -ef | grep reids-
利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。
防止数据的意外丢失,确保数据安全性
redis 操作者通过命令即时保存数据
命令
save
作用
手动执行一次保存操作,每执行一次会在 config 中指定的 dir 目录下生成一个 .rdb 的文件用来保存当前的数据快照信息
下面的这些配置都放在redis的启动配置文件中
dbfilename dump.rdb
? 说明:设置本地数据库文件名,默认值为 dump.rdb
? 经验:通常设置为 dump-端口号.rdb
dir
? 说明:设置存储 .rdb 文件的路径
? 经验:通常设置成存储空间较大的目录中,目录名称 data
rdbcompression yes
? 说明:设置存储至本地数据库时是否压缩数据,默认为 yes, 采用 LZF 压缩
? 经验:通常默认为开启状态,如果设置为 no, 可以节省 CPU 运行时间,但会使存储的文件变大(巨大)
rdbchecksum yes
? 说明:设置是否进行 RDB 文件格式校验,该校验过程在写文件和读文件过程均进行
? 经验:通常默认为开启状态,如果设置为 no, 可以节约读写性过程约 10% 时间消耗,但是存储一定的数据损坏风险
注意:save 指令的执行会阻塞当前 Redis 服务器,直到当前 RDB 过程完成为止,有可能会造成长时间阻塞,线上环境不建议使用。
由上可知,当数据量过大,单线程执行方式造成效率过低的问题,这个时候,需要用到 bgsave,他会把持久化的步骤放到后台执行,相当于异步执行吧
bg 是 background 的缩写
命令
bgsave
作用:
? 手动启动后台保存操作,但不是立即执行
注意:bgsave 命令是针对 save 阻塞问题做的优化。Redis 内部所有涉及到 RDB 操作都采用 bgsave 的方式,save 命令可以放弃使用。
dbfilename dump.rdb
dir
rdbcompression yes
rdbchecksum yes
stop-writes-on-bgsave-error yes
? 说明:后台存储过程中如果出现错误现象,是否停止保存操作
? 经验:通常默认为开启状态
配置(写在 redis 配置文件中)
save second changes
save: 监控时间范围
changes: 监控 key 的变化量
作用
? 满足限定时间范围内 key 的变化数量达到指定数量即进行持久化
位置
? 在 conf 文件中进行配置
范例
save 900 1 # 每 900s 有 1 个 key 发生变化,就持久化一次
save 300 10 # 每 300s 有 10 个 key 发生变化,就持久化一次
save 60 10000 # 每 60s 有 10000 个 key 发生变化,就持久化一次
配置中 key 的数量 +1 条件
注意:save 配置要根据实际业务情况进行设置,频度过高或过低都会出现性能问题,结果可能是灾难性的;save 配置中对于 second 与 changes 设置通常具有互补对应关系,尽量不要设置成包含行关系;save 配置启动后执行的是 bgsave 操作
全量复制
服务器运行过程中重启
debug reload
关闭服务器时制定保存数据
shutdown save
RDB 缺点
always(每次)
? 每次写入操作均同步到 AOF 文件中,数据零误差,性能较低
everysec(每秒)
? 每秒将缓冲区中的指令同步到 AOF 文件中,数据准确性较高,性能较高
? 在系统突然宕机的情况下丢失 1 秒内的数据
no(系统控制)
? 由操作系统控制每次同步到 AOF 文件的周期,整体过程不可控
配置(放在配置文件中)
appendonly yes|no
作用:是否开启 AOF 持久化功能,默认为不开启状态
配置
appendfsync always|everysec|no
作用:AOF 写数据策略
配置
appendfilename filename
作用:AOF 持久化文件名,默认文件名未 appendonly.aof,建议配置为 appendonly-端口号.aof
配置
dir
作用:AOF 持久化文件保存路径,与 RDB 持久化文件保持一致即可。
随着命令不断写入 AOF,文件会越来越大,为了解决这个问题,Redis 引入了 AOF 重写机制压缩文件体积。AOF 文件重写是将 Redis 进程内的数据转化为写命令同步到新 AOF 文件的过程。简单说就是将对同一个数据的若干个命令执行结果转化成最终结果数据对应的指令进行记录。
手动重写
bgrewriteaof
自动重写
auto-aof-rewrite-min-size size
auto-aof-rewrite-percentage percentage
自动重写出发条件设置
auto-aof-rewrite-min-size size
auto-aof-rewrite-percentage percent
自动重写触发比对参数(运行指令 info Persistence 获取具体信息)
aof_current_size
aof_base_size
自动重写触发条件
标签:格式 磁盘利用率 文件拷贝 窗口 sync 除了 根目录 行记录 成功
原文地址:https://www.cnblogs.com/wuyongqiang/p/12702418.html