缓存在不同的记录级别

时间:2013-06-21 08:13:10

标签: database caching

我将键值对存储在数据库中,可以通过webservice访问。请求包含country,district,terminal,webservice返回映射到这些值的值。 数据库可能包含映射到国家/地区的记录,还有映射到区域等的记录,例如:

Id Country District Key Value
1  DE      D1       K1  Dummy1
2  DE               K1  Dummy2
3  DE      D2       K1  Dummy3

因此,如果输入为DE,D1,K1,则必须返回dummy1,如果输入为DE,D3,则必须返回Dummy2,因为我们没有区域特定值。

我创建了一个存储过程,它返回包含输入最合适记录的列表。问题在于,我无法真正使用cahcing。

大多数记录仅分配给国家/地区,但区域有例外,所以我想缓存列表,但密钥总是不同的,所以

DE,D3 DE,D4 etc会返回相同的列表,但是对于这两个输入记录,缓存会包含两次...

另一个选择是只读取国家/地区特定记录,然后读取区域特定记录并合并两个列表...

您是否有任何其他想法可以让cachin成为可能 感谢

1 个答案:

答案 0 :(得分:1)

根据我的缓存经验,在键/值缓存系统中使用输入参数作为缓存键是很常见的做法。

所以尽管DE,D3和DE,D4可能会返回相同的对象,但这应该没问题。使用缓存系统,我不会害怕不止一次存储同一个对象。谁知道,将来输入可能会在未来返回不同的值。

我只是使用输入来创建密钥并缓存存储过程输出。你可以获得像Memcached或Redis这样的分布式缓存,如果你担心空间,可以很容易地存储大量数据。