当时用缓存和DB之间配合时,如何更新缓存,更新DB数据,常用的是读数据,先读缓存,更新数据,先更新数据库,再写入缓存,除了这种策略还有哪些策略呢?
策略一
读操作
- 先查询缓存,如果存在则直接返回
- 如果缓存不存在,则查询数据库,查询到结果写入缓存,返回数据
- 如果数据库中也不存在数据,则设置一个短期过期的key写入缓存,防止请求大量此数据
写操作
- 先更新数据库
- 更新数据库成功后,将数据更新缓存,返回数据
缺点
当频繁修改操作时,如果在修改操作还未完成时,又发起了读取操作,则会造成数据不一致
SET
SET key value [EX seconds][PX milliseconds] [NX|XX]
可选参数
EX seconds
: 设置过期时间,单位为秒,原子操作.SET key value EX second
效果等同于 SETEX key second value
PX milliseconds
:设置过期时间,单位为毫秒,原子操作 SET key value PX millisecond
效果等同于 PSETEX keymillisecond value
NX
:只有键不存在时,才会操作.SET key value NX
效果等同于 SETNX key value
XX
:只在键已经存在时,才对键进行设置操作