共计 13230 个字符,预计需要花费 34 分钟才能阅读完成。
1. Redis 介绍
Redis 是一个开源的使用 ANSI C 语言编写、基于内存的 Key-Value 数据库。
它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set – 有序集合)和 hash(哈希类型)。
Redis 支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,由于完全实现了发布 / 订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。
相比 memcached,Rdeis 有以下优点:
1. redis 原生支持的数据类型更多。
2. redis 具有持久化机制,可以定期将内存中的数据持久化到硬盘上。
3. redis 支持 master-slave 模式的数据备份。
4. 性能。Redis 作者的说法是平均到单个核上的性能,在单条数据不大的情况下 Redis 更好。
为什么这么说呢,理由就是 Redis 是单线程运行的。因为是单线程运行,所以和 Memcached 的多线程相比,整体性能肯定会偏低。因为是单线程运行,所以 IO 是串行化的,网络 IO 和内存 IO,因此当单条数据太大时,由于需要等待一个命令的所有 IO 完成才能进行后续的命令,所以性能会受影响。
2. 安装Redis
2.1 Redis 的安装十分简单,用 yum 或 apt-get 可以直接安装
1 2 | # yum install epel-release(CentOS 7 可以直接安装 epel 源) # yum install redis |
2.2 启动 / 停止 Redis
1 2 3 4 | # redis-server /etc/redis.conf # systemctl start redis # systemctl stop redis |
3. 使用Redis
3.1 Redis-cli 命令行操作 KV
连接到 Redis
1 2 | # redis-cli -p port # redis-cli |
ping
1 | 127.0.0.1:6379> ping <br>PONG |
设置键值
1 2 | 127.0.0.1:6379> set testkey "hello" OK |
查询键
1 2 | 127.0.0.1:6379> get testkey "hello" |
删除键
1 2 | 127.0.0.1:6379> del testkey (integer) 1 |
设定有效期限
1 2 | 127.0.0.1:6379> setex test 10 111 OK |
用 EXPIRE key s 设定过期时间 毫秒用 PEXPIRE
1 2 | 127.0.0.1:6379> EXPIRE test11 300 (integer) 1 |
用 TTL key 查看过期时间 毫秒用 PTTL
1 2 | 127.0.0.1:6379> TTL test11 (integer) 288 |
用 PERSIST key 取消过期时间
1 2 | 127.0.0.1:6379> PERSIST test11 (integer) 1 |
3.2 高级功能
3.2.1 自增,自减等,INCR、DECR、INCRBY、SORT
1 2 3 4 5 6 7 8 | 127.0.0.1:6379> set counter 100 OK 127.0.0.1:6379> incr counter (integer) 101 127.0.0.1:6379> incr counter (integer) 102 127.0.0.1:6379> decr counter (integer) 101 |
3.2.2 事务
1 2 3 4 5 6 7 8 9 10 11 12 | 127.0.0.1:6379> MULTI OK 127.0.0.1:6379> set test11 111111 QUEUED 127.0.0.1:6379> set test12 121212 QUEUED 127.0.0.1:6379> incr counter QUEUED 127.0.0.1:6379> EXEC 1) OK 2) OK 3) (integer) 102 |
3.2.3 HyperLogLogs
Redis 在 2.8.9 版本添加了 HyperLogLog 算法。
3.2.4 发布 / 订阅 功能
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。
在一个客户端订阅频道 redisChat
1 2 3 4 5 | 127.0.0.1:6379> SUBSCRIBE redisChat Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redisChat" 3) (integer) 1 |
在另一个客户端,发送消息到频道 redisChat,订阅者就能接收到消息
发布端:
1 2 | 127.0.0.1:6379> PUBLISH redisChat "redis haha" (integer) 1 |
订阅端:
1 2 3 4 5 6 7 8 | 127.0.0.1:6379> SUBSCRIBE redisChat Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redisChat" 3) (integer) 1 1) "message" 2) "redisChat" 3) "redis haha" |
3.3查看 Redis 状态
1 | 127.0.0.1:6379> info |
info 输出的信息很多,可以指定输出的部分
1 | 127.0.0.1:6379> info stats |
1 | 127.0.0.1:6379> info memory |
used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位。
used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top、ps 等命令的输出一致。
rss > used,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。
内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。
used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。
used_memory_peak : 峰值,设定的最大内存要大于峰值
3.4 其他命令
查看记录数
1 | 127.0.0.1:6379> dbsize |
查看所有 KEY
1 | 127.0.0.1:6379> KEYS * |
列出所有客户端连接
1 | 127.0.0.1:6379> CLIENT LIST |
关闭 ip:port 的客户端
1 | 127.0.0.1:6379> CLIENT KILL 127.0.0.1:11902 |
清空所有数据库的所有 key
1 | 127.0.0.1:6379> FLUSHALL |
清空当前数据库中所有key
1 | 127.0.0.1:6379> FLUSHDB |
返回最后一次成功保存数据到磁盘的时间,以 UNIX 时间戳格式表示
1 | 127.0.0.1:6379> LASTSAVE |
返回当前服务器时间,以 UNIX 时间戳格式表示
1 | 127.0.0.1:6379> TIME |
连接到其他数据库(默认数据库是0)
1 2 | 127.0.0.1:6379> SELECT 1 OK |
将当前数据库的 key 移动到指定的数据库
1 2 | 127.0.0.1:6379> MOVE test2 1 (integer) 1 |
4. 设定文件
4.1 /etc/redis.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 | daemonize no 是否以后台 daemon 方式运行 timeout 0 请求超时时间 maxclients 10000 最大连接数 maxmemory <bytes> 最大内存 maxmemory-policy volatile-lru 达到最大内存时的 LRU 驱逐策略 maxmemory-samples 3 随机抽取 n 个 key 执行 LRU hash -max-ziplist-entries 512 Map 内部不超过多少个成员时会采用线性紧凑格式存储 hash -max-ziplist-value 64 Map 内成员值长度不超过多少字节会采用线性紧凑格式存储 类似的还有,list-max-ziplist-entries 512,list-max-ziplist-value 64 等等 slowlog-log-slower-than 10000 slow log 计入时间,microseconds(1000000) slowlog-max-len 128 slow log 计入条数 |
4.2 查看最大连接数
1 2 3 | 127.0.0.1:6379> config get maxclients 1) "maxclients" 2) "10000" |
运行过程中调整参数
1 | 127.0.0.1:6379> config set maxclients 10001 |
4.3 查看slow log
1 2 3 4 5 6 | 127.0.0.1:6379> SLOWLOG get 127.0.0.1:6379> SLOWLOG get 10 1) 1) (integer) 0 2) (integer) 1448413479 3) (integer) 124211 4) 1) "FLUSHALL" |
确认 slow log 条数设定
1 | 127.0.0.1:6379> SLOWLOG len |
清空 slow log
1 | 127.0.0.1:6379> SLOWLOG reset |
5. 数据持久化
5.1 快照(snapshot)
5.1.1 在设定文件中设置快照
1 2 3 4 | save <seconds> <changes> 开启快照,并设定保存快照到硬盘的频率 rdbcompression yes /no 保存快照的时候,是否压缩 dbfilename dump.rdb 指定快照的文件名(Append Only File 也保存在此) dir /var/lib/redis/ 指定快照存放的场所 |
5.1.2 手动创建快照
在命令行执行 save 或 bgsave 命令
1 2 | 127.0.0.1:6379> SAVE OK |
5.2 日志备份(Append Only File)
类似于 MySQL 的 binlog,将操作都记录在 log 里。快照达不到要求保存的精度时,和快照结合使用,不建议单独使用。默认间隔是 1 秒,可以修改。
5.2.1 在设定文件中设置 AOF
1 2 3 4 | appendonly yes 开启 Append Only File appendfilename "appendonly.aof" 指定日志文件名 appendfsync always /everysec/no 指定写日志的频率 no-appendfsync-on-rewrite no 当有 bgsave 等其他进程执行 fsync()时,AOF 和 appendfsync none 动作一样 |
5.3 还原
要恢复 Redis 的数据只需移动 Redis 的备份文件(dump.rdb,appendonly.aof)到 Redis 目录,然后启动服务器。
为了得到你的 Redis 目录,使用命令如下所示:
1 2 3 | 127.0.0.1:6379> config get dir 1) "dir" 2) "/var/lib/redis" |
6. 后记
本文简单介绍了 Redis 的安装及使用,接下来介绍主从同步,负荷分散。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-05/143591p2.htm
1. Redis 主从同步
Redis 支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布 / 订阅机制。
2. 配置主从同步
Mater Slave 的模式,从 Slave 向 Master 发起 SYNC 命令。
可以是 1 Master 多 Slave,可以分层,Slave 下可以再接 Slave,可扩展成树状结构。
2.1 配置 Mater,Slave
配置非常简单,只需在 slave 的设定文件中指定 master 的 ip 和 port
Master:test166
修改设定文件,服务绑定到 ip 上
1 2 | # vi /etc/redis.conf bind 10.86.255.166 |
重启 Redis
# systemctl restart redis
1 | # less /etc/redis.conf |
Slave:test167
修改设定文件,指定 Master
1 2 3 | slaveof <masterip> <masterport> 指定 master 的 ip 和 port masterauth <master-password> master 有验证的情况下 slave- read -only yes 设置 slave 为只读模式 |
也可以用命令行设定:
1 2 | redis 127.0.0.1:9999> slaveof localhost 6379 OK |
2.2 同期情况确认
Master:
1 2 3 4 5 6 | 127.0.0.1:6379> INFO replication # Replication role:master connected_slaves:1 slave0:ip=10.86.255.167,port=6379,state=online,offset=309,lag=1 …… |
Slave:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 127.0.0.1:6379> INFO replication # Replication role:slave master_host:10.86.255.166 master_port:6379 master_link_status:up master_last_io_seconds_ago:7 master_sync_in_progress:0 slave_repl_offset:365 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 |
同期正常时:
master_link_status:up
master_repl_offset 和 slave_repl_offset 相等,
master_last_io_seconds_ago在 10 秒内。
2.3 Slave升级为Master
Master 不可用的情况下,停止 Master,将 Slave 的设定无效化后,Slave 升级为 Master
1 2 3 4 5 6 7 | redis 127.0.0.1:9999> SLAVEOF NO ONE OK redis 127.0.0.1:9999> info ...... role:master ...... |
2.4 Health Check
Slave 按照 repl-ping-slave-period 的间隔(默认 10 秒),向 Master 发送 ping。
如果主从间的链接中断后,再次连接的时候,2.8 以前按照 full sync 再同期。2.8 以后,因为有 backlog 的设定,backlog 存在 master 的内存里,重新连接之前,如果 redis 没有重启,并且 offset 在 backlog 保存的范围内,可以实现从断开地方同期,不符合这个条件,还是 full sync
用 monitor 命令,可以看到 slave 在发送 ping
1 2 3 | 127.0.0.1:6379> monitor OK 1448515184.249169 [0 10.86.255.166:6379] "PING" |
2.5 设置 Master 的写行为
2.8 以后,可以在设定文件中设置,Master 只有当有 N 个 Slave 处于连接状态时,接受写操作
1 2 | min-slaves-to-write 3 min-slaves-max-lag 10 |
3. Redis HA管理工具
redis-sentinel 能监视同期的状态,发现 Master down 的时候,会进行 failover,将 Slave 升级为 Master,启动后会自动更新 sentinel 设定文件,发生 failover 时,会自动修改 sentinel 和 redis 的设定文件
环境:
Master:10.86.255.167 :6379 sentinel:26379
Slave1:10.86.255.166 :6379 sentinel:26379
Slave2:10.86.255.167 :7379 sentinel:36379
Sentinel 的设定文件在 /etc/redis-sentinel.conf,对 failover 的动作等可以进行一些定义,本次主要验证 Sentinel 的动作,设定文件可以根据具体情况自行调整
3.1 设定 Master,Slave
参照上文设定 Master,Slave,并确认 Mater 和 2 个 Slave 的同期状态正常
3.2 Master 上设定 Sentinel
1 2 3 | # vi /etc/redis-sentinel.conf daemonize yes sentinel monitor mymaster <master ip> 6379 2 |
启动 sentinel
1 2 3 | # redis-sentinel /etc/redis-sentinel.conf 或 # redis-server /etc/redis-sentinel.conf --sentinel |
确认
1 2 | # redis-cli -p 26379 127.0.0.1:26379> INFO sentinel |
确认 Master 信息
1 | 127.0.0.1:26379> sentinel masters |
确认 Slave 信息
1 | 127.0.0.1:26379> sentinel slaves mymaster |
3.3 Slave 上设定 Sentinel
在 slave1 上设定 sentinel
1 2 3 | # vi /etc/redis-sentinel.conf daemonize yes sentinel monitor mymaster <master ip> 6379 2 |
启动 slave1
1 | # redis-sentinel /etc/redis-sentinel.conf |
在 slave2 上设定 sentinel
1 2 3 4 | # less /etc/redis-sentinel_36379.conf daemonize yes port 36379 sentinel monitor mymaster <master ip> 6379 2 |
启动 slave2
1 | # redis-sentinel /etc/redis-sentinel_36379.conf |
3.4 动作确认
停止 Master
1 | 127.0.0.1:6379> SHUTDOWN |
确认日志发生 fail over
1 | # tail /var/log/redis/sentinel.log |
确认 Slave2 变成 Master,Slave1 是 Slave
1 | test167:7379> info replication |
1 | test166:6379> info replication |
启动刚才停掉的 Master,确认变为 Slave
1 | 10.86.255.167:6379> info replication |
3.5 Sentinel 命令
1 2 3 4 5 6 | 127.0.0.1:26379> sentinel masters 127.0.0.1:26379> sentinel slaves mymaster 127.0.0.1:26379> SENTINEL get-master-addr-by-name mymaster 127.0.0.1:26379> SENTINEL reset mymaster 127.0.0.1:26379> SENTINEL failover mymaster 127.0.0.1:26379> SENTINEL flushconfig mymaster |
4. 后记
本文介绍了 Redis 主从同步,读写分离,及 HA,后续会继续研究 Redis。
下面关于 Redis 的文章您也可能喜欢,不妨参考下:
Ubuntu 14.04 下 Redis 安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm
Redis 主从复制基本配置 http://www.linuxidc.com/Linux/2015-03/115610.htm
CentOS 7 下 Redis 的安装与配置 http://www.linuxidc.com/Linux/2017-02/140363.htm
Ubuntu 14.04 安装 Redis 与简单配置 http://www.linuxidc.com/Linux/2017-01/139075.htm
Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm
Redis 单机 & 集群离线安装部署 http://www.linuxidc.com/Linux/2017-03/141403.htm
CentOS 7.0 安装 Redis 3.2.1 详细过程和使用常见问题 http://www.linuxidc.com/Linux/2016-09/135071.htm
Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm
Ubuntu 15.10 下 Redis 集群部署文档 http://www.linuxidc.com/Linux/2016-06/132340.htm
Redis 实战 中文 PDF http://www.linuxidc.com/Linux/2016-04/129932.htm
Redis 热迁移实战总结 http://www.linuxidc.com/Linux/2017-02/141083.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143591.htm
1. Redis 介绍
Redis 是一个开源的使用 ANSI C 语言编写、基于内存的 Key-Value 数据库。
它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set – 有序集合)和 hash(哈希类型)。
Redis 支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,由于完全实现了发布 / 订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。
相比 memcached,Rdeis 有以下优点:
1. redis 原生支持的数据类型更多。
2. redis 具有持久化机制,可以定期将内存中的数据持久化到硬盘上。
3. redis 支持 master-slave 模式的数据备份。
4. 性能。Redis 作者的说法是平均到单个核上的性能,在单条数据不大的情况下 Redis 更好。
为什么这么说呢,理由就是 Redis 是单线程运行的。因为是单线程运行,所以和 Memcached 的多线程相比,整体性能肯定会偏低。因为是单线程运行,所以 IO 是串行化的,网络 IO 和内存 IO,因此当单条数据太大时,由于需要等待一个命令的所有 IO 完成才能进行后续的命令,所以性能会受影响。
2. 安装Redis
2.1 Redis 的安装十分简单,用 yum 或 apt-get 可以直接安装
1 2 | # yum install epel-release(CentOS 7 可以直接安装 epel 源) # yum install redis |
2.2 启动 / 停止 Redis
1 2 3 4 | # redis-server /etc/redis.conf # systemctl start redis # systemctl stop redis |
3. 使用Redis
3.1 Redis-cli 命令行操作 KV
连接到 Redis
1 2 | # redis-cli -p port # redis-cli |
ping
1 | 127.0.0.1:6379> ping <br>PONG |
设置键值
1 2 | 127.0.0.1:6379> set testkey "hello" OK |
查询键
1 2 | 127.0.0.1:6379> get testkey "hello" |
删除键
1 2 | 127.0.0.1:6379> del testkey (integer) 1 |
设定有效期限
1 2 | 127.0.0.1:6379> setex test 10 111 OK |
用 EXPIRE key s 设定过期时间 毫秒用 PEXPIRE
1 2 | 127.0.0.1:6379> EXPIRE test11 300 (integer) 1 |
用 TTL key 查看过期时间 毫秒用 PTTL
1 2 | 127.0.0.1:6379> TTL test11 (integer) 288 |
用 PERSIST key 取消过期时间
1 2 | 127.0.0.1:6379> PERSIST test11 (integer) 1 |
3.2 高级功能
3.2.1 自增,自减等,INCR、DECR、INCRBY、SORT
1 2 3 4 5 6 7 8 | 127.0.0.1:6379> set counter 100 OK 127.0.0.1:6379> incr counter (integer) 101 127.0.0.1:6379> incr counter (integer) 102 127.0.0.1:6379> decr counter (integer) 101 |
3.2.2 事务
1 2 3 4 5 6 7 8 9 10 11 12 | 127.0.0.1:6379> MULTI OK 127.0.0.1:6379> set test11 111111 QUEUED 127.0.0.1:6379> set test12 121212 QUEUED 127.0.0.1:6379> incr counter QUEUED 127.0.0.1:6379> EXEC 1) OK 2) OK 3) (integer) 102 |
3.2.3 HyperLogLogs
Redis 在 2.8.9 版本添加了 HyperLogLog 算法。
3.2.4 发布 / 订阅 功能
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。
在一个客户端订阅频道 redisChat
1 2 3 4 5 | 127.0.0.1:6379> SUBSCRIBE redisChat Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redisChat" 3) (integer) 1 |
在另一个客户端,发送消息到频道 redisChat,订阅者就能接收到消息
发布端:
1 2 | 127.0.0.1:6379> PUBLISH redisChat "redis haha" (integer) 1 |
订阅端:
1 2 3 4 5 6 7 8 | 127.0.0.1:6379> SUBSCRIBE redisChat Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redisChat" 3) (integer) 1 1) "message" 2) "redisChat" 3) "redis haha" |
3.3查看 Redis 状态
1 | 127.0.0.1:6379> info |
info 输出的信息很多,可以指定输出的部分
1 | 127.0.0.1:6379> info stats |
1 | 127.0.0.1:6379> info memory |
used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位。
used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top、ps 等命令的输出一致。
rss > used,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。
内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。
used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。
used_memory_peak : 峰值,设定的最大内存要大于峰值
3.4 其他命令
查看记录数
1 | 127.0.0.1:6379> dbsize |
查看所有 KEY
1 | 127.0.0.1:6379> KEYS * |
列出所有客户端连接
1 | 127.0.0.1:6379> CLIENT LIST |
关闭 ip:port 的客户端
1 | 127.0.0.1:6379> CLIENT KILL 127.0.0.1:11902 |
清空所有数据库的所有 key
1 | 127.0.0.1:6379> FLUSHALL |
清空当前数据库中所有key
1 | 127.0.0.1:6379> FLUSHDB |
返回最后一次成功保存数据到磁盘的时间,以 UNIX 时间戳格式表示
1 | 127.0.0.1:6379> LASTSAVE |
返回当前服务器时间,以 UNIX 时间戳格式表示
1 | 127.0.0.1:6379> TIME |
连接到其他数据库(默认数据库是0)
1 2 | 127.0.0.1:6379> SELECT 1 OK |
将当前数据库的 key 移动到指定的数据库
1 2 | 127.0.0.1:6379> MOVE test2 1 (integer) 1 |
4. 设定文件
4.1 /etc/redis.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 | daemonize no 是否以后台 daemon 方式运行 timeout 0 请求超时时间 maxclients 10000 最大连接数 maxmemory <bytes> 最大内存 maxmemory-policy volatile-lru 达到最大内存时的 LRU 驱逐策略 maxmemory-samples 3 随机抽取 n 个 key 执行 LRU hash -max-ziplist-entries 512 Map 内部不超过多少个成员时会采用线性紧凑格式存储 hash -max-ziplist-value 64 Map 内成员值长度不超过多少字节会采用线性紧凑格式存储 类似的还有,list-max-ziplist-entries 512,list-max-ziplist-value 64 等等 slowlog-log-slower-than 10000 slow log 计入时间,microseconds(1000000) slowlog-max-len 128 slow log 计入条数 |
4.2 查看最大连接数
1 2 3 | 127.0.0.1:6379> config get maxclients 1) "maxclients" 2) "10000" |
运行过程中调整参数
1 | 127.0.0.1:6379> config set maxclients 10001 |
4.3 查看slow log
1 2 3 4 5 6 | 127.0.0.1:6379> SLOWLOG get 127.0.0.1:6379> SLOWLOG get 10 1) 1) (integer) 0 2) (integer) 1448413479 3) (integer) 124211 4) 1) "FLUSHALL" |
确认 slow log 条数设定
1 | 127.0.0.1:6379> SLOWLOG len |
清空 slow log
1 | 127.0.0.1:6379> SLOWLOG reset |
5. 数据持久化
5.1 快照(snapshot)
5.1.1 在设定文件中设置快照
1 2 3 4 | save <seconds> <changes> 开启快照,并设定保存快照到硬盘的频率 rdbcompression yes /no 保存快照的时候,是否压缩 dbfilename dump.rdb 指定快照的文件名(Append Only File 也保存在此) dir /var/lib/redis/ 指定快照存放的场所 |
5.1.2 手动创建快照
在命令行执行 save 或 bgsave 命令
1 2 | 127.0.0.1:6379> SAVE OK |
5.2 日志备份(Append Only File)
类似于 MySQL 的 binlog,将操作都记录在 log 里。快照达不到要求保存的精度时,和快照结合使用,不建议单独使用。默认间隔是 1 秒,可以修改。
5.2.1 在设定文件中设置 AOF
1 2 3 4 | appendonly yes 开启 Append Only File appendfilename "appendonly.aof" 指定日志文件名 appendfsync always /everysec/no 指定写日志的频率 no-appendfsync-on-rewrite no 当有 bgsave 等其他进程执行 fsync()时,AOF 和 appendfsync none 动作一样 |
5.3 还原
要恢复 Redis 的数据只需移动 Redis 的备份文件(dump.rdb,appendonly.aof)到 Redis 目录,然后启动服务器。
为了得到你的 Redis 目录,使用命令如下所示:
1 2 3 | 127.0.0.1:6379> config get dir 1) "dir" 2) "/var/lib/redis" |
6. 后记
本文简单介绍了 Redis 的安装及使用,接下来介绍主从同步,负荷分散。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-05/143591p2.htm