Redis相关

作者:guoxj
浏览:443

    Redis 是一款开源(BSD许可证)的 in memory 数据结构存储。它可以被用作数据库、缓存以及消息处理中间件。它支持包括字符串、散列、列表以及集合在内的多种数据结构,支持范围查询,具有内建的复制共嗯那个,支持 Lua 脚本、LRU 缓存淘汰策略、事务处理和两种不同的磁盘持久化方案(RDB 和 AOF),还能建立 Redis 集群来提供高可用性能。

    Redis 的RDB(Redis DataBase)持久化方案会在指定的时间点将内存的数据集快照存入磁盘。当RDB开始工作时,Redis 服务会将自己分叉( fork)出一个持久化进程,此时原服务进程的一切内存数据都相当于被保存了一份快照,然后持久化进程将它的内存进行压缩并写入磁盘。而要注忌的定,如术业进程并不有新的缓存Set 操作,那么持久化的效率还是相当个错的,因为持久化进程不需要从原服务进程复制内存,它们共享同一批虚拟内行贝。但足如尔八内右无要程中,原服务进程收到了缓存Set 操作,那就忌公有示服人-时复制( cOnY on修改,此时操作系统内核会对涉及到的虚拟内存贝进行一个与的复的的(ecipy owrite)的操作,确保持久化进程地址空间中的数据不变而服务进程中的数据则被更新。

    Redis的AOF方案则是将服务端接收到的所有写探作〈包指 Se 1nL许派加磁盘上的日志文件,该日志文件的格式和Redis协议保持一以,上只佛决的( append only format)。当服务重启时,Redis会重放日志文件的内容来重新构建整个内存映像。

    RDB的优点在于它的数据文件中包含了一系列经过基缩的RealS数有时内应快照,非常适合备份和灾后恢复。RDB方案对于性能的影响要比AOP 小,因为它不占用原服务进程的磁盘IO。在大数据集情况下使用RDB方案的Redis服务重启时间要快于AOF。

    RDB的缺点在于当系统死机时丢失的数据比AOF 多,因RDD 八RE休出双据到上一次持久化进程运行的那个时间点,该时间点到系>达的Q凯"以外n就全部丢失了。而AOF 则可以记录到系统死机刖取后一次与探作门效的内SctRDB fork进程的次数也会高于AOF 的,0fork期,Kculs No作械多则响应操作的响应会非常慢。(这段时间是内核在进行写时复制,Set操作越多则响应越慢。)

    AOF 的优点就是较少的数据丢失,你可以配置各种不同的fsync(指把缓存中的写指令纪录到磁盘中)策略:不主动进行fsync,每秒进行一次fsync,或者每个操作进行一次 fsync。默认是每秒进行一次fsync,此时日志文件每秒都会被刷新到磁盘上一次,缓存的写操作依然具有不错的性能,而系统死机时最多也就丢失 1s的数据。AOF 的日志只允许添加,所以不会有数据损坏,日志最后如果有写到一半的命令也可以被轻易丢弃。

    AOF的缺点也不少:首先是同样数据量下会比RDB占用更多的磁盘空间,因为AOF会保存从服务初始状态到最终状态的所有内容:其次AOF的速度要比RDB慢,因为它写入磁盘的频率会高于RDB,所以受到磁盘IO的影响也更大,而磁盘IO操作的速度要远远慢于内存读写操作。

    在Linux下安装Redis服务非常方便,我们只需要执行下列命令就可以:

sudo apt-get install redis-server

 




登录后回复

共有0条评论