一尘不染

Redis如何知道它是否必须从数据库返回缓存的数据或新数据

redis

比方说,我正在使用数据库中的一些长期运行任务来成千上万次记录或进行记录,并使用Redis对其进行缓存。第二天,有人更改了数据库中的一些记录。

下次,redis如何知道它必须返回缓存的数据或再次必须重新访问DB中的所有数千条记录?

如何实现同步?


阅读 893

收藏
2020-06-20

共1个答案

一尘不染

Redis不知道数据库中的数据是否已更新。

通常,我们使用Redis缓存数据,如下所示:

  1. 客户端检查Redis中是否存在数据(例如键值对)。
  2. 如果密钥存在,则客户端从Redis获取相应的值。
  3. 否则,它将从DB获取数据,并将其设置为Redis。客户端还5为Redis中的键值对设置到期时间(例如分钟)。
  4. 然后,Redis将为以后对同一密钥的所有请求提供服务。尽管Redis中的数据可能已过时。
  5. 但是,5几分钟后,此密钥将自动从Redis中删除。
  6. 转到步骤1。

因此,为了使您的数据保持Redis最新更新,您可以设置较短的到期时间。但是,您的数据库必须处理大量请求。

如果要大大减少对数据库的请求,可以设置较大的到期时间。这样,Redis在大多数情况下都可以为请求提供可能的过期数据。

您应该仔细考虑性能与陈旧数据之间的权衡。

2020-06-20