
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Redis数据库的应用在许多软件编程开发项目中是非常常见的一个编程开发技术,而本文我们就通过案例分析来了解一下,Redis数据库数据处理策略分析。
Redis的过期策略
Redis的过期策略包括两种,分别是定期删除和惰性删除:
定期删除:指的是Redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。(不能完全删除)
惰性删除:直接查询数据的时候,redis会先查看一些这个数据是否已经过期,如果过期,就进行删除。(不能完全删除数据)
Redis的删除内存策略
定期删除和惰性删除都存在着一些问题,如果定期删除漏掉了很多过期key,然后你也没及时去查,也就没走惰性删除,此时有可能导致大量过期key堆积在内存里,导致redis内存块耗尽了
Redis内存淘汰机制
Redis中数据淘汰实际上是指的在内存空间不足时,清理掉某些数据以节省内存空间。虽然Redis已经有了过期的策略,它可以清理掉有效期外的数据。
如果过期的数据被清理之后存储空间还是不够怎么办?是不是还可以再删除掉一部分数据?在缓存这种场景下这个问题的答案是可以,因为这个数据即便在Redis中找不到,也可以从被缓存的数据源中找到。
所以在某些特定的业务场景下,我们是可以丢弃掉Redis中部分旧数据来给新数据腾出空间。
内存淘汰机制包括以下几种方式:
众所周知,redis是一个内存数据库,所有的键值对都是存储在内存中。当数据变多之后,由于内存有限就要淘汰一些键值对,使得内存有足够的空间来保存新的键值对。在redis中,通过设置server.maxmemory来限定内存的使用(server.maxmemory为0,不限制内存),到达server.maxmemory就会触发淘汰机制。
noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,一般不用。
Allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除近少使用的key(常用)。
allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key(很少用)。
volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除近少使用的key(很少用)。
volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。
volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。