不明确的缓存键

时间:2016-03-11 16:27:32

标签: asp.net-mvc database caching data-structures

我有一个这样的数据结构(真实的节点级别更多):

  -------Node 1------           
  |               |
  |               |
Node A:         Node B:
-element 1A1    -element 1B1
-element 1A2    -element 1B2

每个元素都由父母ID标识。每个节点和元素可以存储或不存储某些值。这些值是从父母继承的。所以当我想找到1A2的值时,我:

1) check if value for 1A2 exists
2) if not, check if value for A exists
3) if not, check if value for 1 exists
4) save the first found value

结构存储在数据库中,而且复杂得多。所以问题是数据库查询太慢了。但是这个结构并没有经常改变,所以我决定为它构建一个服务器端缓存。在结构中的任何更改之后删除缓存,并在第一次尝试读取某个元素的值时重建。问题是,当缓存键是这样的时候:

"1-A-1" for 1A1 value
"1-A-2" for 1A2 value
"1-A" for A value
"1" for 1 value

1A有值且1A1没有值但1A2有值,存储的第一个缓存是“1-A”。然后,当我试图找到1A2的值时,我首先搜索缓存,然后在那里找到适合我的元素的键“1-A”,因为它们是正确的节点。所以我没有对数据库进行任何查询,因为我认为,缓存中找到的值是正确的。但事实并非如此。 我怎么解决这个问题?有什么解决方案吗?我希望尽可能少地进行查询,但我总是希望找到给定元素的确切值。

0 个答案:

没有答案