赞
踩
Redis是一个高性能的key-value内存数据库。和Memcached相比,它支持更丰富的数据类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,很大程度补偿了Memcached这类key/value存储的不足。
Redis有两种持久化方式:RDB快照和AOF日志。
默认的方式。看成是一种备份。
每隔一段时间,将内存中的数据,生成数据集的时间点快照,将内存中的数据写入RDB文件,保存在磁盘中。 当内存中数据崩溃,重新启动时,会读此文件。
redis.conf配置
# rdb生成策略,从下往上匹配
save 900 1 # 在900秒内,如果有1个key发生变化,执行RDB
save 300 10 # 在300秒内,如果有10个key发生变化,执行RDB
save 60 10000 # 在60秒内,如果10000个key发生变化,执行RDB
# 其他参数
stop-writes-on-bgsave-error yes # 当后台写进程出错时,禁止写入新的数据
rdbcompression yes # RDB是否压缩。如果看中性能,选no。压缩会节约空间,但会影响备份和恢复性能
rdbchecksum yes # 执行rdb恢复的时候,检查rdb文件
dbfilename dump.rdb # 生成的rdb文件
dir ./ # 存放rdb的目录
RDB的优点和缺点
客户端操作Redis时,把客户端的操作记录(写操作),记录到文件中,如果发生崩溃,就把所有操作完全执行一遍,恢复数据。
redis.conf配置
appendonly yes # aof日志默认是禁用的,需要修改此参数来启动aof
# aof记录日志策略
appendfsync always # 每个操作都记录日志:优点:安全。缺点:慢。
appendfsync everysec # 每秒记录一次日志(默认采用)
appendfsync no # 由操作系统来决定记录日志的方式。一般不会用到。
# aof重写的参数设置
auto-aof-rewrite-percentage 100 # aof文件比上次重写时,超过的百分比
auto-aof-rewrite-min-size 64mb # 执行重写的aof文件大小。64M触发重写
AOF日志重写
Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。
举例:假设每个操作都记录日志
> set money 0
> incr money
> incr money
> incr money
> incr money
> incr money
> incr money
> incr money
> incr money
> incr money
…自增100次
如果每个操作都记录日志,会记录101条日志。最终结果 money 100。
进行日志重写:
把101条,合并成1条:set money 100
redis-benchmark模拟用户访问:
./bin/redis-benchmark -n 100000
RDB和AOF同时存在,优先使用AOF
Redis 可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下,当 Redis 重启时,它会优先使用 AOF 文件来还原数据集, 因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。