在缓存中进行搜索,如何做

epui2008 2013-04-10 11:57:50
把记录放入缓存,然后再缓存中进行搜索,这样还不是比较快了
如何实现呢?

重点就是如何查询缓存中数据内容


...全文
1298 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2013-05-07
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
“缓存datatable”,呵呵,这不叫缓存。你把数据库表放在内存里,那么数据记录的命中率几乎为0,这种缓存纯粹是奢侈地浪费内存。 另外既然是缓存,它就要求尽可能快地在数据变脏时清除缓存(从而下次读取数据时重建缓存)。而你这种方式把没用的所有数据都“抖动地”读入内存,那么重新刷新时岂不是要让机器死掉么?! 有人以为缓存就是把数据库表放在内存里,其实这根本没有懂什么缓存,只不过仗着“我有的是内存”这个借口胡乱设计程序而已。
我不懂缓存,我只知道有内存不用才叫浪费
艾伦图灵 2013-05-04
  • 打赏
  • 举报
回复
晕,搞搞清楚再说 Memcached不是memory cache Memcached才是在另一个进程中单独执行的。 memory cache是.net 4.5里面的。。
  • 打赏
  • 举报
回复
比如说csdn可能有几千万个帖子,程序运行时在数据缓存中可能只有几百个帖子就够了,因为常被重复读取的也就是这么多。 它们使用
var content = (CsdnPage)cache[key]
这样的代码就可以独取出来。 比如说缓存单元的Duration属性设置为10分钟,那么你的缓存中最多只是把帖子缓存10分钟。 比如说你的每个论坛的列表页面的缓存单元的缓存依赖项设置为依赖于 Cache["xxxx论坛的列表页面"] 这样一个缓存单元,那么每当一个论坛有新的帖子顶到上面时就为这个 Cache["xxxx论坛的列表页面"] 设置一个新的值例如 DateTime.Now.Ticks,那么所有依赖于这个缓存单元的所有其它缓存单元就自动清除了(不是脏的缓存了)。 比如说一个帖子可能在 Cache["帖子390421987号"]中可以读取到,同时也在 Cache[".net首页列表"] 这个缓存单元中也可以读取到,也就是一个数据在不同的缓存单元所引用的数据(数据列表)中都会有。它们就是不同查询“小单元”的结果,临时缓存起来供下一次相同的查询表达式来复用。根本不是说“把所有帖子的数据库表放在内存里来代替向数据库的查询”这个概念。
  • 打赏
  • 举报
回复
memorycache它就是内存数据库,我对于把它叫做“缓存”实际上是比较“鄙视”的。 而且就算是使用它,基本上也都是做为独立的服务器上的独立进程共享给其它各个应用服务器,没有听说有人为每一个程序都在本地开启一个MemoryCache的。 它就是一个内存数据库。你非要把它叫做缓存,你非要轻佻而泛泛的地这么叫它,我也表示很遗憾。这说明设计师内有把一个要求合理归回的“本地缓存系统”跟一个远程的“内存数据库系统(与传统的基于文件的关系数据库系统相对的概念)”区分开来的知识。 我举过一个简单的缓存的例子可以参考。完全可以有别的许多用法来使用本地缓存,但是基本原则都是一样的,不是“把用不着的记录都提前扔到内存里就叫做缓存了”的。
http://bbs.csdn.net/topics/390425743
  • 打赏
  • 举报
回复
“缓存datatable”,呵呵,这不叫缓存。你把数据库表放在内存里,那么数据记录的命中率几乎为0,这种缓存纯粹是奢侈地浪费内存。 另外既然是缓存,它就要求尽可能快地在数据变脏时清除缓存(从而下次读取数据时重建缓存)。而你这种方式把没用的所有数据都“抖动地”读入内存,那么重新刷新时岂不是要让机器死掉么?! 有人以为缓存就是把数据库表放在内存里,其实这根本没有懂什么缓存,只不过仗着“我有的是内存”这个借口胡乱设计程序而已。
艾伦图灵 2013-05-04
  • 打赏
  • 举报
回复
缓存这个东西太泛泛了。。 static变量也是缓存,application也可以是缓存.. cache也是缓存,memorycache也是缓存。。。 不同的缓存对象提供了不同的api。。你让别人怎么回答呢? memorycache提供了很多搜索方法。。
epui2008 2013-05-04
  • 打赏
  • 举报
回复
我说的缓存是指 : 来到一个搜索页面,先把若干条记录放入 缓存datatable中,然后根据搜索关键词 对缓存中的数据进行匹配显示
九幽之君 2013-04-12
  • 打赏
  • 举报
回复
引用 4 楼 liuchaolin 的回复:
先将数据写到DataTable,然后将DataTable放到应用程序缓存某个节点, 读取应用程序缓存中存放的节点,强型转成DataTable,然后DataTable中有Select()方法可以用
缓存中的数据不易太大,程序中缓存的数据一般比较固定,像一些基本表的信息,用户信息。 不然你的性能会差,还会造成数据丢失。
md5e 2013-04-11
  • 打赏
  • 举报
回复
先将数据写到DataTable,然后将DataTable放到应用程序缓存某个节点, 读取应用程序缓存中存放的节点,强型转成DataTable,然后DataTable中有Select()方法可以用
骑猪看海 2013-04-11
  • 打赏
  • 举报
回复
缓存和搜索没有半毛钱关系
Scorip 2013-04-11
  • 打赏
  • 举报
回复
别把内存和缓存弄混、
  • 打赏
  • 举报
回复
你说的缓存是指什么缓存呢?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧