1, 下载编译安装 Redis
http://www.redis.cn/download.html
下载完成, 使用 rz 命令上传至 Linux 服务器
- tar -xvf Redis-5.0.5.tar.gz #解压源码包
- mv Redis-5.0.5 /usr/local/Redis #将源码包移动到 / usr/local / 目录下, 重命名为 Redis
- cd /usr/local/Redis/ #cd 到源码目录里
make #编译
中间有两个报错, 解决
# 没有安装 gcc 包, yum install gcc -y 解决
# 加个环境变量一起编译 make MALLOC=libc 用这句命令能正常编译
- make install #安装编译完成的程序, 也可以不用安装, cd 到 src 目录 执行也行
- cd /usr/local/bin/ #这个目录是安装完成后 生成的脚本, 打开关闭 客户端工具都在里面
2. 配置 配置文件, 启动 关闭 Redis
- VIM /usr/local/Redis/Redis.conf #配置 Redis 配置文件, 修改以下选项
- bind 0.0.0.0 #监听 IP 0.0.0.0 表示此计算机所有 IP 都监听
- daemonize yes #是否后台启动 Redis, 打开
- protected-mode no # Redis 的安全机制, 打开可能会报错
- #requirepass 123456 #设置密码, 默认注释状态.
- Redis-server /usr/local/Redis/Redis.conf #指定配置文件启动 Redis
netstat -nltp|grep 6379 #检查 6379 是否被监听了, 这个端口是 Redis 默认端口
Redis-cli #登陆客户端, 输入几个值, 查看以下
Redis-cli shutdown #关闭 Redis 服务
3.RDB 持久化
RDB 持久化方式是通过快照 (snapshotting) 完成的, 当符合一定条件时, Redis 会自动将内存中所有数据以二进制方式生成一份副本并存储在硬盘上. 当 Redis 重启时, 并且 AOF 持久化未开启时, Redis 会读取 RDB 持久化生成的二进制文件 (默认名称 dump.rdb, 可通过设置 dbfilename 修改) 进行数据恢复, 对于持久化信息可以用过命令 "info Persistence" 查看.
快照触发条件
RDB 生成快照可自动促发, 也可以使用命令手动触发, 以下是 Redis 触发执行快照条件, 后续会对每个条件详细说明:
客户端执行命令 save 和 bgsave 会生成快照;
根据配置文件 save m n 规则进行自动快照;
主从复制时, 从库全量复制同步主库数据, 此时主库会执行 bgsave 命令进行快照;
客户端执行数据库清空命令 FLUSHALL 时候, 触发快照;
客户端执行 shutdown 关闭 Redis 时, 触发快照;
save 命令触发和 shutdown 触发
客户端执行 save 命令, 该命令强制 Redis 执行快照, 这时候 Redis 处于阻塞状态, 不会响应任何其他客户端发来的请求, 直到 RDB 快照文件执行完毕, 所以请慎用.
首先使用 Redis-cli info Persistence 查看最近一次持久化时间:
- # 可以看到数据是一组时间戳看的 不方便看, 我们可以用 AWK 配合 date 命令转换下
- date "+%Y-%m-%d %H:%M:%S" -d @`redis-cli info Persistence|awk -F":" 'NR==5{print$2}'`
# 可以看到运行了 Redis-cli save 命令, 最后一次的保存时间已经发生了改变
shutdown 触发
# 注意只有正常关闭才会触发保存, 直接 kill 是无法触发的
bgsave 命令触发
basave 命令执行之后立即返回 OK , 然后 Redis fork 出一个新子进程 (在此期间父进程不响应请求), 原来的 Redis 进程(父进程) 继续处理客户端请求, 而子进程则负责将数据保存到磁盘, 然后退出.
# 用法和 save 差不多, 但是阻塞时间比 save 大大减少了
save m n 规则触发
这个配置在配置文件里
默认
- save 900 1 #表示 900 秒内有 1 个键发生修改, 触发 bgsave
- save 300 10 #表示 300 秒内有 10 个键发生修改, 触发 bgsave
- save 60 10000 #表示 60 秒内有 10000 个键发生修改, 触发 bgsave
- # 上面关系式或的意思, 满足一个即可触发 bgsave
FLUSHALL 触发和主从触发
flushall 命令用于清空数据库, 请慎用, 当我们使用了则表明我们需要对数据进行清空, 那 Redis 当然需要对快照文件也进行清空, 所以会触发 bgsave.
在 Redis 主从复制中, 从节点执行全量复制操作, 主节点会执行 bgsave 命令, 并将 rdb 文件发送给从节点.
RDB 持久化配置 -- 配置文件
- save m n
- # 配置快照 (rdb) 促发规则, 格式: save <seconds> <changes>
- #save 900 1 900 秒内至少有 1 个 key 被改变则做一次快照
- #save 300 10 300 秒内至少有 300 个 key 被改变则做一次快照
- #save 60 10000 60 秒内至少有 10000 个 key 被改变则做一次快照
- # 关闭该规则使用 svae ""
- dbfilename dump.rdb
- #rdb 持久化存储数据库文件名, 默认为 dump.rdb
- stop-write-on-bgsave-error yes
- #yes 代表当使用 bgsave 命令持久化出错时候停止写 RDB 快照文件, no 表明忽略错误继续写文件.
- rdbchecksum yes
- # 在写入文件和读取文件时是否开启 rdb 文件检查, 检查是否有无损坏, 如果在启动是检查发现损坏, 则停止启动.
- dir "/etc/redis"
- # 数据文件存放目录, rdb 快照文件和 aof 文件都会存放至该目录, 请确保有写权限
- rdbcompression yes
- # 是否开启 RDB 文件压缩, 该功能可以节约磁盘空间
来源: http://www.bubuko.com/infodetail-3302674.html