php - redis 缓存策略

查看:131
本文介绍了php - redis 缓存策略的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

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

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

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

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

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

解决方案

  1. 你需要一个方式(比如天然可空类型或者和类型)来区分这两个情况。比如有数据的时候里边存的是一个 JSON 化的列表 [{...}, {...}],那么没数据时自然存 [] 了。总之没有冲突就行。

  2. 缓存更新的套路 | 酷 壳 - CoolShell.cn

这篇关于php - redis 缓存策略的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆