该文转载自:http://www.cnblogs.com/swyi/p/6093763.htmlhtml
Redis是一种高级key-value数据库。它跟memcached相似,不过数据能够持久化,并且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。因此Redis也能够被当作是一个数据结构服务 器。
Redis的全部数据都是保存在内存中,而后不按期的经过异步方式保存到磁盘上(这称为“半持久化模式”);也能够把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。redis
第一种方法filesnapshotting:默认redis是会以快照的形式将数据持久化到磁盘的(一个二进 制文件,dump.rdb,这个文件名字能够指定),在配置文件中的格式是:save N M表示在N秒以内,redis至少发生M次修改则redis抓快照到磁盘。固然咱们也能够手动执行save或者bgsave(异步)作快照。数据库
工做原理简单介绍一下:当redis须要作持久化时,redis会fork一个子进程;子进程将数据写到磁盘上一个临时RDB文件中;当子进程完成写临时文件后,将原来的RDB替换掉,这样的好处就是能够copy-on-write服务器
第二种方法Append-only:filesnapshotting方法在redis异常死掉时, 最近的数据会丢失(丢失数据的多少视你save策略的配置),因此这是它最大的缺点,当业务量很大时,丢失的数据是不少的。Append-only方法可 以作到所有数据不丢失,但redis的性能就要差些。AOF就能够作到全程持久化,只须要在配置文件中开启(默认是no),appendonly yes开启AOF以后,redis每执行一个修改数据的命令,都会把它添加到aof文件中,当redis重启时,将会读取AOF文件进行“重放”以恢复到 redis关闭前的最后时刻。数据结构