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的持久化存储提供两种方式:快照(RDB文件)和追加式文件(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的持久化方案,我就讲到这里为止了!