redis缓存更新策略

105 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 10 天,点击查看活动详情

前言

在前一天的文章里,我们讲述了redis是如何运用缓存的。但是就像我上期提出的问题一样,缓存确实好,但是不能一直用缓存,如果缓存不更新,数据库却更新了,那数据的一致性就会出现问题。所以今天的这篇文章就是在说明更新的几种方式。[参考资料来源于]((10条消息) Redis:内存淘汰机制_redis内存淘汰机制_jchen104的博客-CSDN博客)

redis缓存更新策略

1 内存淘汰

在redis.conf文件中我们可以配备一个参数maxmemory,当redis存入的数据超过这个值的几分之几时(一般是四分之三)是就会去主动去根据lru算法去淘汰掉一些最近不使用也可以叫最长时间不使用的一些内容。

2 超时剔除

在redis中我们可以为其中的键值对设置超时时间。当时间过去之后,redis就会一脚踢开。从数据库里面获取真实的数据。

3 主动更新

这个就跟字面上的一样,在数据库里面的数据发生更新时,就通知缓存进行更新,确保数据的一致性问题。

三种策略的优缺点

这三种策略都不是最佳的策略。我们需要结合实际的情况进行分析。我们主要从以下两点进行分析。维护成本和数据一致性。先来说说内存淘汰,这个的运维成本是最低的,但是数据一致性却是最低的。而超时剔除则处于中间位置,成本较低但是数据的一致性也比较差。而主动更新是维护成本最高的,但也是数据一致性较好的。

总结

在低一致性的业务中使用内存淘汰是极好的。而在高一致性业务中则是选择超时剔除和主动更新混着用。