到底应该先操作缓存还是先操作数据库?

在数据读多写少的情况下作为缓存来使用,恐怕是Redis使用普遍的场景了。当使用Redis作为缓存的时候,一般流程是这样的。

  • 如果缓存在Redis中存在,即缓存命中,则直接返回数据
  • 如果Redis中没有对应缓存,则需要直接查询数据库,然后存入Redis,后把数据返回

通常情况下,我们会为某个缓存设置一个key值,并针对key值设置一个过期时间,如果被查询的数据对应的key过期了,则直接查询数据库,并将查询得到的数据存入Redis,然后重置过期时间,后将数据返回,伪代码如下:

/** * 根据用户名获取用户详细信息 * @author 公众号【蝉沐风】 */public User getUserInfo(String userName) {      User user = redisCache.getName("user:" + userName);      if (user != null) {          return user;      }<p>      // 从数据库中直接搜索      user = selectUserByUserName(userName);      // 将数据写入Redis,并设置过期时间      redisCache.set("user:" + userName, user, 30000);      // 返回数据      return user;}</p>