1. Linux中实现redis-命令在任意目录执行
修改profile文件:
vi /etc/profile
在最后行添加:
export PATH=$PATH:/usr/software/redis/src
注意:/usr/software/redis/src 表示的是redis-cli等命令存在的目录路径
重新加载/etc/profile
source /etc/profile
打开redis.conf
2.配置redis-cli密码
- requirepass yourPassword
- 重启redis服务
测试是否配置成功
./redis-cli
输入:keys * 获取所有key,发现正常获取。说明密码设置没有效!
解决办法:
redis-cli 进入客户端
输入:config set requirepass yourPassword
会提示(error) NOAUTH Authentication required. 说明密码设置成功!
3. 设置RDB持久化
默认配置
save 900 1
save 300 10
save 60 10000
after 900 sec (15 min) if at least 1 key changed
after 300 sec (5 min) if at least 10 keys changed
after 60 sec if at least 10000 keys changed
RDB工作流程
- redis根据配置自己去生成rdb快照文件。
- fork一个子进程。
- 子进程尝试将数据dump到rdp快照文件中
- 完成rdb快照后,替换之前旧的快照文件。
4. 设置AOF持久化
设置appendonly = yes打开AOF持久化(生产环境一定要打开)。打开后,redis每次接收一条写命令,会先写入os cache,然后每隔一定时间再fsync下,只有执行完fsync后才会写入磁盘中。当AOF和RDB都开启时,reids重启后默认先从AOF恢复数据。可配置三种fsync策略:
- appendfsync always 每写一条数据就执行一次fsync, 性能差,吞吐量低。
- appendfsync everysec (默认项) 每隔一秒执行一次fsync
- appendfsync no 不主动执行fsync
默认AOF文件名为appendonly.aof
appendfilename "appendonly.aof"
redis会根据淘汰策略清理掉不常用的数据,所有AOF也会在每隔一段时间做rewrite操作,确保AOF文件不会过大,保持和redis内存的数据量一致。比如:上一次AOF rewirte 后是128mb,然后运行过一段时间后,AOF超过了256mb (auto-aof-rewrite-percentage 100 ,阈值100%)后,同时大于64mb(auto-aof-rewrite-min-size),就会再次触发rewrite。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
AOF工作流程:
- redis fork一个子进程
- 子进程基于当前内存中的数据,构建日志,开始往一个新的临时的AOF文件中写入日志。
- redis主进程,在内存中写入新的日志,同时新的日志也继续写入旧的AOF文件中
- 子进程写完后,主进程将内存中的新日志再次追加到新的AOF文件中。
- 用新的AOF文件替换旧的文件。
AOF破损文件修复:
redis-check-aof --fix 修复破损的AOF文件。