redis笔记

Redis为什么是单线程、及高并发快的大原因详解

https://blog.youkuaiyun.com/u011663149/article/details/85307615

redis的过期策略和内存淘汰机制

  • 过期策略:即redis针对过期的key使用的清除策略,策略为,定期删除+惰性删除
  • 内存淘汰机制:即内存占用达到内存限制设定值时触发的redis的淘汰策略来删除键

过期策略

定期删除,redis默认每隔100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每隔100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,redis岂不是卡死)。因此,如果只采用定期删除策略,会导致很多key到时间没有删除。

惰性删除,也就是说在你获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除。

过期策略存在的问题,由于redis定期删除是随机抽取检查,不可能扫描清除掉所有过期的key并删除,然后一些key由于未被请求,惰性删除也未触发。这样redis的内存占用会越来越高。此时就需要内存淘汰机制

内存淘汰机制

redis配置文件中可以使用maxmemory <bytes>将内存使用限制设置为指定的字节数。当达到内存限制时,Redis会根据选择的淘汰策略来删除键。(ps:没搞明白为什么不是百分比)

策略有如下几种:(LRU的意思是:Least Recently Used最近最少使用的,LFU的意思是:Least Frequently Used最不常用的)

volatile-lru -> Evict using approximated LRU among the keys with an expire set.
                    在带有过期时间的键中选择最近最少使用的。(推荐)
allkeys-lru -> Evict any key using approximated LRU.
                    在所有的键中选择最近最少使用的。(不区分是否携带过期时间)(一般推荐)
volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
                    在带有过期时间的键中选择最不常用的。
allkeys-lfu -> Evict any key using approximated LFU.
                    在所有的键中选择最不常用的。(不区分是否携带过期时间)
volatile-random -> Remove a random key among the ones with an expire set.
                    在带有过期时间的键中随机选择。
allkeys-random -> Remove a random key, any key.
                    在所有的键中随机选择。
volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
                    在带有过期时间的键中选择过期时间最小的。
noeviction -> Don't evict anything, just return an error on write operations.
                    不要删除任何东西,只是在写操作上返回一个错误。默认。

Redis通信协议

https://my.oschina.net/coderknock/blog/993801

https://www.jianshu.com/p/f670dfc9409b

Redis持久化-RDB和AOF

https://segmentfault.com/a/1190000016021217

https://blog.youkuaiyun.com/person_on_pyramid/article/details/95330086

      重启 Redis 时,我们很少使用 rdb 来恢复内存状态,因为会丢失大量数据。我们通常使用 AOF 日志重放,但是重放 AOF 日志性能相对 rdb 来说要慢很多,这样在 Redis 实例很大的情况下,启动需要花费很长的时间

     Redis 4.0 为了解决这个问题,带来了一个新的持久化选项——混合持久化。将 rdb 文件的内容和增量的 AOF 日志文件存在一起。这里的 AOF 日志不再是全量的日志,而是自持久化开始到持久化结束的这段时间发生的增量 AOF 日志,通常这部分 AOF 日志很小。

     于是在 Redis 重启的时候,可以先加载 rdb 的内容,然后再重放增量 AOF 日志就可以完全替代之前的 AOF 全量文件重放,重启效率因此大幅得到提升。

Redis持久化时的内存预留

https://blog.youkuaiyun.com/chenggong2dm/article/details/79306151

Redis管道

https://blog.youkuaiyun.com/shenchaohao12321/article/details/87909462

Redis事务

https://baijiahao.baidu.com/s?id=1613631210471699441&wfr=spider&for=pc

Redis主从同步原理

https://www.cnblogs.com/kevingrace/p/5685332.html

哨兵Redis Sentinel基本原理

https://www.jianshu.com/p/ed0a85be9578

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值