(转)淘淘商城系列——Redis持久化方案

摘要:
key过期后将不再可用。Redis持久化方案Redis的所有数据都是保存到内存中的,但Redis可以实现数据的持久化存储,即将数据保存到磁盘上。Redis的持久化存储提供两种方式:快照和追加式文件:RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照,它是Redis默认支持的持久化方案。写操作命令记录的格式跟Redis协议一致,以追加的方式进行保存。Redis的持久化方案,我就讲到这里为止了!

http://blog.csdn.net/yerenyuan_pku/article/details/72858975

Redis中设置key的过期时间

Redis中的expire命令用于设置key的过期时间,以毫秒计。key过期后将不再可用。Redis中的expire命令基本语法如下:

expire key second

设置成功返回1。当key不存在或者不能为key设置过期时间时返回0。
设置key的过期时间成功后,我们还可使用ttl key命令查看key的有效期,如若返回正数,则说明正在倒计时;返回-1,则说明这个key是持久化的;返回-2,则说明这个key是不存在的。
最后,我们可使用persist key命令来清除key的过期时间,使其持久化,如若返回0,则说明持久化没成功;返回1,则说明持久化成功。

Redis持久化方案

Redis的所有数据都是保存到内存中的,但Redis可以实现数据的持久化存储,即将数据保存到磁盘上。Redis的持久化存储提供两种方式:快照(RDB文件)和追加式文件(AOF文件):

  • RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照,它是Redis默认支持的持久化方案。
  • AOF持久化方式则会记录每一个服务器收到的写操作。在服务启动时,这些记录的操作会逐条执行从而重建出原来的数据。写操作命令记录的格式跟Redis协议一致,以追加的方式进行保存。说得通俗一点,就是把所有对Redis数据库操作的命令,即增删改操作的命令,保存到一个文件中。数据库恢复时把所有的命令执行一遍即可。
  • Redis的持久化是可以禁用的,就是说你可以让数据的生命周期只存在于服务器的运行时间里。
  • 两种方式的持久化是可以同时存在的,但是当Redis重启时,AOF文件会被优先用于重建数据。

快照(RDB文件)是Redis默认支持的持久化方案,我们可以通过修改redis.conf配置文件设置自动快照方式,rdb形式的默认配置如下:
(转)淘淘商城系列——Redis持久化方案第1张
从上图可以看到Redis的配置文件默认设置了3个保存点,即使Redis如果在每N秒后数据发生了M次改变就保存快照文件。例如下面这个保存点配置表示每60秒,如果数据发生了1000次以上的变动,Redis就会自动保存快照文件:

save 60 1000

我们要知道保存点是可以设置多个的,Redis的redis.conf配置文件就是这么干的,下面对这些保存点做一点小小的阐述。

  1. save 900 1:900秒内如果发生超过一个key被修改,则发起快照保存。
  2. save 300 10:300秒内如果发生超过10个key被修改,则发起快照保存。
  3. save 60 10000:60秒内如果发生超过10000个key被修改,则发起快照保存。

此方式是将内存中的数据以快照的方式写入到二进制文件中,默认文件名为dump.rdb,如下图所示。
(转)淘淘商城系列——Redis持久化方案第2张
如果你需要备份数据库的话,只须复制一份该文件即可。
快照并不是很可靠。如果你的电脑突然宕机了,或者电源断了,又或者不小心杀掉了进程,那么最新的数据就会丢失。而AOF文件则提供了一种更为可靠的持久化方式。每当Redis接受到会修改数据集的命令时,就会把命令追加到AOF文件里,当你重启Redis时,AOF里的命令会被重新执行一次,重建数据。
我们可以通过修改redis.conf配置文件来开启AOF配置,即把配置项appendonly设为yes,如下图所示。
(转)淘淘商城系列——Redis持久化方案第3张
关于AOF的配置,redis.conf配置文件中有几项配置需要我们重点关注,如下。

  1. appendonly yes:启用AOF持久化方式。
  2. appendfilename appendonly.aof:AOF文件的名称,默认为appendonly.aof。
  3. appendfsync everysec:每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。

保存以上修改之后,需要重启redis才能生效。这时我们/redis/bin目录中发现多了一个appendonly.aof文件,但该文件中是没有任何数据的。
(转)淘淘商城系列——Redis持久化方案第4张
这时,两种持久化方案同时开启了,那么当Redis重启时,AOF文件会被优先用于重建数据。如果大家不信,可使用./redis-cli命令连接上redis服务,然后再使用keys *命令查看一下当前redis数据库这里面有多少个key,我们忽然发现一个key都没有了,要知道当前redis数据库是有key的啊!只不过是它们存放到了dump.rdb文件当中了,这足以说明当Redis重启时,AOF文件会被优先用于重建数据。
(转)淘淘商城系列——Redis持久化方案第5张
现在我们使用set命令向当前redis数据库中添加几个key,接着按Ctrl+C组合键退出该连接,最后使用ll命令查看一下bin目录,可发现appendonly.aof文件有数据了,如下图所示。
(转)淘淘商城系列——Redis持久化方案第6张
如果要一探appendonly.aof文件中的内容,可使用vim appendonly.aof命令查看,如下图所示。
(转)淘淘商城系列——Redis持久化方案第7张
Redis的持久化方案,我就讲到这里为止了!

免责声明:文章转载自《(转)淘淘商城系列——Redis持久化方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS -- app全局字体设置oracle sqlldr导入数据和导入去除空格下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL连接池

一. 什么是数据库连接池 官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对连接池中的连接进行申请,使用,释放。 理解:创建数据库连接池是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接池,并把他们集中管理,供程序使用,可以保证...

【ogg三】日常运维篇:清理归档日志,ogg进程注册服务,定期备份数据库

清理归档日志 ogg使用需要开启归档日志,归档日志会随着时间的推移逐渐增多,占满空间,导致应用无法正常运行。如果归档日志满了会报错 ORA-00257:archiver error解决办法 检查flash recovery area的使用情况 select * from V$FLASH_RECOVERY_AREA_USAGE; 解决办法:使用rman...

C#批量附加指定目录下的所有数据库文件到数据库中

应用场合:因为经常更换操作系统,所以D盘存放数据库文件目录的数据库每次都要一个一个的附加到MSSQL中,因此设计程序批量附加省时间也方便自己和大家。 程序不足:没有去研究跟实现NDF日志文件附加和多个日志文件的数据库附加。 程序源码:         /// <summary>         /// 循环查找指定目录下要附加的数据库文件和对...

SQLServer数据库(二)

数据库设计:就是将数据库中的数据库实体及这些数据库实体之间的关系,进行规划和结构化的过程。 项目开发过程: 需求分析 概要设计 详细设计 代码编写 运行测试 打包发行 数据库的系统分析基本步骤:收集信息、标识实体、标识每个实体需要存储的详细信息、标识实体之间的关系。 实体,就是指现实世界中具有区分其它事物的特征或属性,并与其他实体有联系的实体。实体一般是名...

redis在.Net程序中使用

1.设置访问密码 config set requirepass 123456 2.连接redis服务器 private static string redisHost = ConfigHelper.GetAppSetting("redisHost"); private static int redisPort = ConfigHelper.GetA...

ADO.NET 新特性之SqlBulkCopy

数据库webservice代码分析server.net存储 在.Net1.1中无论是对于批量插入整个DataTable中的所有数据到数据库中,还是进行不同数据源之间的迁移,都不是很方便。而在.Net2.0中,SQLClient命名空间下增加了几个新类帮助我们通过DataTable或DataReader批量迁移数据。数据源可以来自关系数据库或者XML文件...