【发布时间】:2012-01-16 22:29:52
【问题描述】:
搜索是我们网站上最常用的功能,搜索查询是在我们的数据库上执行的 CPU 最密集、最复杂和频繁的查询,导致数据库服务器上的 CPU 使用率很高。为了减少数据库的负载,我们一直在研究各种缓存策略。目前,我们打算使用 ASP.NET 缓存。
这个想法是在缓存中拥有一个包含最频繁/最近创建/访问的对象的内存数据库,然后使用 linq 查询内存数据库以得出搜索结果。我最初的想法是缓存用户列表,然后使用 linq 查询或修改此列表。但是考虑到多个线程访问或尝试修改 List 的复杂性,我正在寻找其他选项。
当时我认为不是缓存列表,而是以 ID 作为键缓存单个用户对象并尝试查询缓存。在http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx 我看到 Cache 有一个扩展方法 AsQueryable 但我不确定这是什么意思。缓存是一个键值对,所以使用 AsQueryable 我可以查询键并获得一组用户对象,还是我能够查询用户对象并获得我想要的结果?
【问题讨论】: