Redis是一种高级key-value 型的NoSQL数据库。它跟 memcached类似是内存型数据库,不过Redis 数据可以做持久化,即内存中的数据可以同步到磁盘进行存储。而且Redis所支持的数据类型很丰富。有字符串,链表,集合和有序集合等。Redis支持在服务器端计算集合的并交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构型服务器。
Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”RDB);也可以把每一次数据变化都写入到一个append only file(AOF)里面(这称为“全持久化模式”)。
Redis 的数据都存放在内存中,如果没有配置持久化功能,Redis重启后数据就全丢失了,于是需要开启Redis 的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘中恢复数据。Redis提供两种方式进行持久化,一种是RDB 持久化(原理是将 Redis在内存中的数据库记录定时 dump 到磁盘上的 RDB 持久化),另外一种是 AOF( appendonly file)持久化(原理是将Redis的操作日志以追加的方式写入文件)。那么这两种持久化方式有什么区别呢,改如何选择呢?
RDB和AOF的优缺点
RDB存在哪些优势呢?
1)一旦采用该方式,那么你的整个Redis 数据库将只包含一个文件,这对于文件备份而
言是非常完美的。比如,你可能打算每个小时归档一次最近24小时的数据,同时还要每天归档一次最近30天的数据。通过这样的备份策略,一旦系统出现灾难性故障,我们可以非常容易的进行恢复。
2)对于灾难恢复而言,RDB是非常不错的选择。因为我们可以非常轻松