Redis数据安全性分析
1、redis自带压测脚本
Redis提供了压测脚本 redis-benchmark,可以对Redis进⾏快速的基准测试。

例如 redis-benchmark -t set,get -n 100000 -c 50 -q,你会看到类似下面的输出:
SET: 89285.71 requests per second
GET: 89928.05 requests per second
表示在测试条件下,Redis 服务器平均每秒可以处理约 8W+ 次 SET、GET 操作。这个值就是我们常说的 QPS,是衡量系统性能的核心指标。
2、Redis的数据持久化机制
- ⽆持久化:完全关闭数据持久化,不保证数据安全。相当于将Redis完全当做缓存来⽤。
- RDB(RedisDatabase):按照⼀定的时间间隔缓存Redis所有数据快照。
- AOF(Append Only File):记录Redis收到的每⼀次写操作。这样可以通过操作重演的⽅式恢复 Redis的数据。
- RDB+AOF:同时保存Redis的数据和操作。
RDB
优点:
- 1、RDB⽂件⾮常紧凑,适合定期备份数据与重启时快速恢复数据到内存。
- 2、RDB备份时性能⾮常快,对主线程的性能⼏乎没有影响。主线程只需要启动⼀个负责数据备份的⼦线程即可。所有的备份⼯作都由⼦线程完成,这对主线程的IO性能⼏乎没有影响。
缺点:
- 1、RDB不能对数据进⾏实时备份,所以,总会有数据丢失的可能。
- 2、RDB需要fork化⼦线程的数据写⼊情况,在fork的过程中,需要将内存中的数据克隆⼀份。如果数据量太⼤,或者CPU性能不是很好,RDB⽅式就容易造成Redis短暂的服务停⽤。
AOF
优点:
- 1、AOF持久化更安全。例如Redis默认每秒进⾏⼀次AOF写⼊,这样,即使服务崩溃,最多损失⼀秒的操作。
- 2、AOF的记录⽅式是在之前基础上每次追加新的操作。因此AOF不会出现记录不完整的情况。即使因为⼀些特殊原因,造成⼀个操作没有记录完整,也可以使⽤redis-check-aof⼯具轻松恢复。
- 3、当AOF⽂件太⼤时,Redis会⾃动切换新的⽇志⽂件。这样就可以防⽌单个⽂件太⼤的问题。
- 4、AOF记录操作的⽅式⾮常简单易懂,你可以很轻松的⾃⾏调整⽇志。⽐如,如果你错误的执⾏了⼀次 FLUSHALL 操作,将数据误删除了。使⽤AOF,你可以简单的将⽇志中最后⼀条FLUSHALL指令删掉,然后重启数据库,就可以恢复所有数据。
缺点:
- 1、针对同样的数据集,AOF⽂件通常⽐RDB⽂件更⼤。
- 2、在写操作频繁的情况下,AOF备份的性能通常⽐RDB更慢。
何时会触发RDB备份?
- 1、到达配置⽂件中默认的快照配置时,会⾃动触发RDB快照。
- 2、⼿动执⾏save或者bgsave指令时,会触发RDB快照。 其中save⽅法会在备份期间阻塞主线程。bgsve则不会阻塞主线程。但是他会fork⼀个⼦线程进⾏持久化,这个过程中会要将数据复制⼀份,因此会占⽤更多内存和CPU。
- 3、主从复制时会触发RDB备份。LASTSAVE指令查看最后⼀次成功执⾏快照的时间。时间是⼀个代表毫秒的LONG数字,在linux中可以使⽤date -d @{timestamp} 快速格式化。
RDB核心配置:
多少秒内多少次变更会保存
save <seconds> <changes> [<seconds> <changes> ...]
dir ⽂件⽬录
dbfilename ⽂件名 默认dump.rdb
rdbcompression 是否启⽤RDB压缩,默认yes。 如果不想消耗CPU进⾏压缩,可以设置为no
stop-writes-oin-bgsave-error 默认yes。如果配置成no,表示你不在乎数据不⼀致或者有其他的⼿段发现和控制这种不⼀致。
在快照写⼊失败时,也能确保redis继续接受新的写⼊请求。
rdbchecksum 默认yes。在存储快照后,还可以让redis使⽤CRC64算法来进⾏数据校验,但是这样做会增加⼤约10%的性能消耗。
如果希望获得最⼤的性能提升,可以关闭此功能。
AOF核心配置
appendonly 是否开启aof。 默认是不开启的。
appendfilename ⽂件名称。
appendfsync 同步⽅式。默认everysecond 每秒记录⼀次。no 不记录(交由操作系统进⾏内存刷
盘)。 always 记录每次操作,数据更安全,但性能较低。
appenddirname AOF⽂件⽬录。新增参数,指定aof⽇志的⽂件⽬录。 实际⽬录是 {dir}+{appenddirname}
auto-aof-rewrite-percentage, auto-aof-rewrite-min-size ⽂件重写触发策略。默认每个⽂件
64M, 写到100%,进⾏⼀次重写。
no-appendfsync-on-rewrite aof重写期间是否同步

浙公网安备 33010602011771号