Python--Redis实战:第四章:数据安全与性能保障:第1节:持久化选项

上一篇文章:Python--Redis实战:第三章:Redis命令:第七节:其他命令
下一篇文章:Python--Redis实战:第四章:数据安全与性能保障:第2节:快照持久化

前面的几章介绍了各式各样的Redis命令以及使用这些命令来操作数据结构的方法,还列举了几个使用Redis来解决实际问题的例子。为了让读者做好使用Redis构建真实软件的准备,本章将展示维护数据安全以及应对系统故障的方法。另外,本章还会介绍一些能够在保证数据完整性的前提下提升Redis性能的方法。

本章首先会介绍Redis的各个持久化选项,这些选项可以让用户将字节的数据存储在硬盘上面。接着本章将介绍如果通过Redis的复制特性,把不断更新的数据副本存储到附加的机器上面,从而提升系统的性能和数据的可靠性 。之后本章将会说明同时使用复制和持久化的好处和坏处,并通过这些例子来告诉读者应该如果去选择适合自己的持久化选项和复制选项。最后本章将对Reds的事务特性和流水线特性进行介绍,并讨论如果诊断某些性能问题。

阅读这一章的重点是要弄懂更多的Redis运作原理,从而学会如何在首先保障数据正确的前提下,加快数据操作的执行速度。

现在,让我们来看看Redis是如果将数据存储到硬盘里面,使得数据在Redis重启之后仍然存在的。

持久化选项

Redis提供了两种不同的持久化方法来将数据存储到硬盘里面。一种方法叫快照(snapshotting),它可以将存在于某一时刻的所有数据都写入硬盘里面。另一种方法叫只追加文件(append-only file,AOF),它会在执行写命令时,将被执行的写命令复制到硬盘里面。这两种持久化方法即可以同时使用,又可以单独使用,在某些情况下甚至可以两种方法都不使用,具体选择哪种持久化方法需要根据用户的数据以及应用的决定。

将内存中的数据存储到硬盘的一个主要原因是为了在之后重用数据,或者是为了防止系统故障而将数据备份到一个远程位置。另外,存储在Redis里面的数据有可能是经过长时间计算得出的,或者有程序在使用Redis存储的数据进行计算,所有用户希望可以将这些数据存储起来以便之后使用,这样就不必再重新计算了。对于一些Redis应用来说,“计算”可能只是简单地将另一个数据库的数据复制到Redis里面,但对于另外一些Redis应用来说,Redis存储的数据可能是根据数十亿行日志进行聚合分析得出的结果。

两组不同的配置选项控制着Redis将数据写入硬盘里面的方法。下面代码展示了这些配置选项以及他们的实例配置值:

#快照持久化选项
#多久执行一次自动快照操作
save 60 1000
#创建快照失败后是否仍然继续执行写命令
stop-writes-on-bgsave-error no
#是否对快照文件进行压缩
rdbcompression yes
#命名硬盘上的快照文件
dbfilename dump.rdb

#AOF持久化选项
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

#共享选项,这个选项决定了快照文件和AOF文件的保存位置。
dir ./

接下来的一节将介绍如何使用快照来保存数据安全。

上一篇文章:Python--Redis实战:第三章:Redis命令:第七节:其他命令
下一篇文章:Python--Redis实战:第四章:数据安全与性能保障:第2节:快照持久化

相关推荐