β

redis缓存同步小伎俩

鱼儿的博客 13 阅读
php

redis做缓存分为被动和主动两种,今天要说的是被动+主动结合的一个小伎俩。

主动+被动结合,有2种常见做法:

set流派适合应付读热点的场景,不希望因为delete造成缓存穿透,影响到性能。

delete流派比较平庸,没有太密集的热点读压力,偏向于海量冷数据的被动缓存,删除的性价比更高。

小伎俩

今天的小伎俩与set流派有关,主要指出一个并发竞争的case。

考虑如下的时序:

结局:缓存里cache了一份老数据A。

对于缓存一致性要求高的业务是无法接受这种竞争的,即便没有很高的缓存一致性要求,一般业务也不希望这种事情出现。

解决方法,查询时使用setnx命令(set if not exist)取代set,同理可以用hsetnx取代hset,不同数据结构均有对应方法。

php
作者:鱼儿的博客
斯是陋室,惟吾德馨
原文地址:redis缓存同步小伎俩, 感谢原作者分享。

发表评论