到底应该先操作缓存还是先操作数据库?
在数据读多写少的情况下作为缓存来使用,恐怕是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>