在Cache中存储对象集合的方法或策略

时间:2016-06-12 11:10:01

标签: caching redis

我正在尝试将对象集合存储在缓存中。

   {
    "name": "Dep1",
    "employees": [{
        "id": 1,
        "name": "emp1",
        "profilePic": "http://test.com/img1.png"
    }, {
        "id": 2,
        "name": "emp2",
        "profilePic": "http://test.com/img2.png"
    }, {
        "id": 3,
        "name": "emp3",
        "profilePic": "http://test.com/img3.png"
    }, {
        "id": 4,
        "name": "emp4",
        "profilePic": "http://test.com/img4.png"
    }]
}

在这种情况下,如果员工1更改了他的个人资料图片,我需要使完整的缓存对象无效以保持数据一致性。 这种方法破坏了缓存,因为只要员工有任何更新,我就需要清除完整的对象。

有没有更好的方法或设计我们可以遵循以优化它?

由于

1 个答案:

答案 0 :(得分:0)

这是否是一个redis问题?我认为这是一般目的。

仅检索ID,然后通过它的ID请求每个条目。

将每个请求的条目列表仅存储为ID列表。

您现在可以缓存列表,也可以缓存每个条目。

由于您只检索ID,因此可以对数据制作非常简单的超高效索引(数据将始终直接从索引中获取,因为它只是ID)。更新可能需要也可能不需要使列表的高速缓存无效,使条目高速缓存无效可能就足够了。即使您使列表无效,您仍然可以获得相当好的性能,因为您不太可能经常使条目缓存无效。