(转)淘淘商城系列——Redis持久化方案
2017-06-08 10:17
363 查看
http://blog.csdn.net/yerenyuan_pku/article/details/72858975
设置成功返回1。当key不存在或者不能为key设置过期时间时返回0。
设置key的过期时间成功后,我们还可使用
最后,我们可使用
RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照,它是Redis默认支持的持久化方案。
AOF持久化方式则会记录每一个服务器收到的写操作。在服务启动时,这些记录的操作会逐条执行从而重建出原来的数据。写操作命令记录的格式跟Redis协议一致,以追加的方式进行保存。说得通俗一点,就是把所有对Redis数据库操作的命令,即增删改操作的命令,保存到一个文件中。数据库恢复时把所有的命令执行一遍即可。
Redis的持久化是可以禁用的,就是说你可以让数据的生命周期只存在于服务器的运行时间里。
两种方式的持久化是可以同时存在的,但是当Redis重启时,AOF文件会被优先用于重建数据。
快照(RDB文件)是Redis默认支持的持久化方案,我们可以通过修改redis.conf配置文件设置自动快照方式,rdb形式的默认配置如下:
从上图可以看到Redis的配置文件默认设置了3个保存点,即使Redis如果在每N秒后数据发生了M次改变就保存快照文件。例如下面这个保存点配置表示每60秒,如果数据发生了1000次以上的变动,Redis就会自动保存快照文件:
我们要知道保存点是可以设置多个的,Redis的redis.conf配置文件就是这么干的,下面对这些保存点做一点小小的阐述。
此方式是将内存中的数据以快照的方式写入到二进制文件中,默认文件名为dump.rdb,如下图所示。
如果你需要备份数据库的话,只须复制一份该文件即可。
快照并不是很可靠。如果你的电脑突然宕机了,或者电源断了,又或者不小心杀掉了进程,那么最新的数据就会丢失。而AOF文件则提供了一种更为可靠的持久化方式。每当Redis接受到会修改数据集的命令时,就会把命令追加到AOF文件里,当你重启Redis时,AOF里的命令会被重新执行一次,重建数据。
我们可以通过修改redis.conf配置文件来开启AOF配置,即把配置项appendonly设为yes,如下图所示。
关于AOF的配置,redis.conf配置文件中有几项配置需要我们重点关注,如下。
保存以上修改之后,需要重启redis才能生效。这时我们/redis/bin目录中发现多了一个appendonly.aof文件,但该文件中是没有任何数据的。
这时,两种持久化方案同时开启了,那么当Redis重启时,AOF文件会被优先用于重建数据。如果大家不信,可使用
现在我们使用set命令向当前redis数据库中添加几个key,接着按
如果要一探appendonly.aof文件中的内容,可使用
Redis的持久化方案,我就讲到这里为止了!
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的配置文件默认设置了3个保存点,即使Redis如果在每N秒后数据发生了M次改变就保存快照文件。例如下面这个保存点配置表示每60秒,如果数据发生了1000次以上的变动,Redis就会自动保存快照文件:
save 60 1000
我们要知道保存点是可以设置多个的,Redis的redis.conf配置文件就是这么干的,下面对这些保存点做一点小小的阐述。
save 900 1:900秒内如果发生超过一个key被修改,则发起快照保存。
save 300 10:300秒内如果发生超过10个key被修改,则发起快照保存。
save 60 10000:60秒内如果发生超过10000个key被修改,则发起快照保存。
此方式是将内存中的数据以快照的方式写入到二进制文件中,默认文件名为dump.rdb,如下图所示。
如果你需要备份数据库的话,只须复制一份该文件即可。
快照并不是很可靠。如果你的电脑突然宕机了,或者电源断了,又或者不小心杀掉了进程,那么最新的数据就会丢失。而AOF文件则提供了一种更为可靠的持久化方式。每当Redis接受到会修改数据集的命令时,就会把命令追加到AOF文件里,当你重启Redis时,AOF里的命令会被重新执行一次,重建数据。
我们可以通过修改redis.conf配置文件来开启AOF配置,即把配置项appendonly设为yes,如下图所示。
关于AOF的配置,redis.conf配置文件中有几项配置需要我们重点关注,如下。
appendonly yes:启用AOF持久化方式。
appendfilename appendonly.aof:AOF文件的名称,默认为appendonly.aof。
appendfsync everysec:每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。
保存以上修改之后,需要重启redis才能生效。这时我们/redis/bin目录中发现多了一个appendonly.aof文件,但该文件中是没有任何数据的。
这时,两种持久化方案同时开启了,那么当Redis重启时,AOF文件会被优先用于重建数据。如果大家不信,可使用
./redis-cli命令连接上redis服务,然后再使用
keys *命令查看一下当前redis数据库这里面有多少个key,我们忽然发现一个key都没有了,要知道当前redis数据库是有key的啊!只不过是它们存放到了dump.rdb文件当中了,这足以说明当Redis重启时,AOF文件会被优先用于重建数据。
现在我们使用set命令向当前redis数据库中添加几个key,接着按
Ctrl+C组合键退出该连接,最后使用
ll命令查看一下bin目录,可发现appendonly.aof文件有数据了,如下图所示。
如果要一探appendonly.aof文件中的内容,可使用
vim appendonly.aof命令查看,如下图所示。
Redis的持久化方案,我就讲到这里为止了!
相关文章推荐
- 淘淘商城系列——Redis持久化方案
- redis系列-redis的持久化
- Redis系列(四)-低成本高可用方案设计
- Redis系列(二)--缓存设计(整表缓存以及排行榜缓存方案实现)
- 淘淘商城系列——redis-desktop-manager的使用
- 淘淘商城系列——Redis的安装
- Redis系列-事务处理、持久化操作、pub_sub、虚拟内存
- 淘淘商城系列——使用Spring来管理Redis单机版和集群版
- redis--持久化方案
- Redis系列(四):低成本高可用方案设计
- Redis持久化方案详解
- REDIS学习(6)查看redis状态,以及rdb和aof两种持久化方案的区别
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- redis系列(五)持久化
- Redis系列~Redis持久化配置(二十)
- Redis 作为数据库持久化替代方案的问题分析
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- Redis系列(4)_持久化方式-RDB
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- 淘淘商城系列——Redis集群的搭建