允许cache miss的场景,不管是memcache还是redis,当被缓存的内容变化时,是改修改缓存,还是淘汰缓存?这是今天将要讨论的话题。

问:KV缓存都缓存了一些什么数据?
答:
(1)朴素类型的数据,例如:int
(2)序列化后的对象,例如:User实体,本质是binary
(3)文本数据,例如:json或者html
(4)...

问:淘汰缓存中的这些数据,修改缓存中的这些数据,有什么差别?
答:
(1)淘汰某个key,操作简单,直接将key置为无效,但下一次该key的访问会cache miss
(2)修改某个key的内容,逻辑相对复杂,但下一次该key的访问仍会cache hit

可以看到,差异仅仅在于一次cache miss。

问:缓存中的value数据一般是怎么修改的?
答:
(1)朴素类型的数据,直接set修改后的值即可
(2)序列化后的对象

收藏 打印