redis 缓存策略

在使用redis缓存数据的过程中,设计缓存思路如下:
获取数据时,先从缓存中获取数据,如果获取到的数据为空,则查询数据库,然后先将查询到的数据缓存到redis,再返回数据
但现在有两个问题请教一下大家:

  1. 如果数据库中查询的结果为空,那么不会缓存数据,因此也无法从缓存中获取数据,那么每次获取数据时都会进行一个数据库查询,这个应该怎么优化?

  2. 数据进行更新时,缓存应该怎么处理?

对这两个问题我有一点不成熟的想法,现提出来恳请大家指点一下是否可行以及是否有更好的处理方式:

对于第一个问题,如果从数据库查询没有获取到数据,那么缓存一个固定的默认值(如字符串:'nodata')表示没有数据,下次从缓存中获取数据时,得到这个固定表示没有数据的值时就直接返回空,而不用再次查询数据库

对于第二个问题,当前想法是,如果更新的数据是不是特别重要的话,那么将数据写入数据库后直接更新缓存中对应的数据,下次获取数据时不用查询数据库就能直接获取到最新的数据,但如果更新的数据是特别重要的(比如:金钱),那么将数据写入数据库后直接清除对应的缓存,下次再获取数据的时候就需要查询数据库获取最新的数据。

查看回复