redis过期策略有哪些?
redis 过期策略是:定期删除+惰性删除。
所谓定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。
假设redis里放了10w个key,都设置了过期时间,每隔几百毫秒,就检查10w个key,那redis基本上就死了,cpu负载会很高的,消耗在检查过期key上了。实际上redis是每隔100ms随机抽取一些key来检查和删除的。
Redis常用内存优化:
Redis内部实现没有对内存分配方面做过多的优化,在一定程度上会存在内存碎片,不过大多数情况下这个不会成为Redis的性能瓶颈,不过如果在Redis内部存储的大部分数据是数值型的话,Redis内部采用了一个shared integer的方式来省去分配内存的开销。
即在系统启动时先分配一个从1~n那么多个数值对象放在一个池子中,如果存储的数据恰好是这个数值范围内的数据,则直接从池子里取出该对象,并且通过引用计数的方式来共享,这样在系统存储了大量数值下。
也能一定程度上节省内存并且提高性能,这个参数值n的设置需要修改源代码中的一行宏定义REDIS_SHARED_INTEGERS,该值默认是10000,可以根据自己的需要进行修改,修改后重新编译就可以了。
以上内容参考 百度百科—Redis