概述
Redis属于NoSql,即非关系性数据库,采纳key-value的模式存值。采纳Redis作为缓存,能够缓解数据库的压力。因为Redis的运行环境在内存中,同时应用c语言编写,所以取数据的速度比拟快。
同时因为在内存环境中,所以要思考两个问题。(1)内存环境个别断电即擦除,所以须要长久化策略。(2)Redis的存储数据的能力是无限的,内存数据满了,应该如何解决。
Redis的长久化策略
1.RDB模式
RDB是Redis默认的长久化策略。应用Redis,会主动生成一个RDB文件。RDB文件记录的是数据快照,占用空间小,长久化效率高。
然而Redis是单线程的,记录快照会阻塞Redis的应用,所以它的默认设置是,900秒内,1次扭转,进行快照。300秒内,10次扭转,进行快照。60秒内,10000次扭转,进行快照。
这就有失落数据的可能性。
2.AOF模式
为了应答数据失落的可能性,Redis推出AOF模式,它默认是敞开的。它记录的是用户层操作行为,能够确保数据不失落。
然而因为记录的是操作行为,文件占用内存大,并且复原数据的速度慢。
3.模式抉择
1.如果对数据完整性要求较高,应用AOF模式
2.如果谋求效率,容许大量失落数据,应用RDB模式
3.如果想两者兼顾能够采纳集群的形式,主机和从机采纳不同的模式。
Redis内存优化策略
1.默认策略noeviction
Redis内存满了之后,默认是不进行任何解决。失常状况下都会批改redis.conf,批改默认策略。
2.LRU(Least Recently Used)
LRU是最近起码应用,开启之后,当内存满了,会将最近起码应用的数据删除。
Redis外面有两种可选策略,一种是针对快到期的数据,进行LRU算法(volatile-lru),一种是针对所有数据进行LRU算法(allkeys-lru)
3.LFU(Least Frequently Used)
LFU是最近起码应用。它思考到有已经特地热门的数据,然而前期很少有人拜访的状况,所以是计数寄存器定时右移一位,呈指数递加。
Redis外面有两种可选策略,一种是针对快到期的数据,进行LFU算法(volatile-lfu),一种是针对所有数据进行LFU算法(allkeys-lfu)
4.Random
Random 是随机删除数据,这就有可能带来缓存击穿或者穿透问题,所以失常状况下是不会应用这种算法,和下面两种一样,Redis也提供了两种可选策略。一种快到期,一种针对所有数据
5.TTL
TTL是将行将超时的数据删除,所以是只针对设定了超时工夫的数据。Redis也只提供了一种策略。