请教一下C#有哪些缓存框架?

osacar 2014-10-28 10:40:00
最近做一个winform项目,里面有大量的数据字典记录。如果客户端每次请求,字典数据都从数据库里获取,这样效率上都有一定影响。能不能在服务端缓存这些数据,用到的时候直接从缓存里取。因为才转过来做C#,之前一直做java开发。对c#了解不是太多。请问一下c#有没有类似JAVA的ehcache这样的缓存框架?或者大家都用什么解决方案来进行缓存?
...全文
2800 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
woxieao 2016-03-18
  • 打赏
  • 举报
回复
https://github.com/woxieao/CacheService
MONKEY__ 2015-10-21
  • 打赏
  • 举报
回复
我想问一下,楼主最终是怎么实现的呢?memcached?C# Redis?
smthgdin_020 2014-10-29
  • 打赏
  • 举报
回复
C3 4.0后就有runtime.cache了。 可以做个memorycachae什么的,在客户端缓存常用的数据就行了。
比尔咔咔 2014-10-29
  • 打赏
  • 举报
回复
引用 15 楼 youzelin 的回复:
[quote=引用 14 楼 chentaoyql 的回复:] [quote=引用 12 楼 youzelin 的回复:] 把所有的需要的数据写到一个 TXT 文件里面,然后用 CacheDependency 去监视这个文件,如果发生变化,就重新刷新 Cache,把文件内容加载进去,然后操作,这样只要不变化、以及只要 Cache 不过期,读取的会一直是 cache 里面的内容。不过有一个前提,你需要写一个小程序,去定期的检测 TXT 文件内容的来源地的数据有没有更新,如有更新,直接刷新 TXT 里面的内容。
Why要写Txt,CacheDependency支持很多依赖情况,自己也可以写第三方的支持。 Txt要用HD I/O 必然慢,20年前的老系统估计会这么玩。[/quote] 请你举例,并写一下接近实际代码的 伪代码看看。[/quote] 其实现在很多缓存系统都是这原理,与你说的其实只有一点区别, 就是数据不需要写入文件,写入内存即可,这难度不大的。 Hadoop倒是文件缓存,不过是linux的了,Hadoop响应是秒级的相对很慢的,
ww_2446135903 2014-10-29
  • 打赏
  • 举报
回复
利用Cache.Add方法将数据信息缓存示例 //将数据项目加入缓存 protected void btnAddCache_Click(object sender, EventArgs e) { //利用Cache.Add()方法将数据加入缓存 Cache.Add("Name", txtUserName.Text, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); Cache.Add("Photo", txtTel.Text, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); Cache.Add("Position", txtJob.Text, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null); txtMsg.Text = "缓存加入成功!"; }//codego.net/tags/11/1/ //显示缓存数据 protected void btnDisplayCache_Click(object sender, EventArgs e) { IDictionaryEnumerator CacheIDE = Cache.GetEnumerator();//显示缓存数据 int i = 0; string info = null; info += "缓存项目数据(Key / Value):" + "<br>"; while (CacheIDE.MoveNext())//循环输出缓存项目 { info += i.ToString() + ". "; info += CacheIDE.Key.ToString() + " : "; info += CacheIDE.Value.ToString() + "<br>"; i++; } if (Cache["Name"] == null)//判断缓存是否有数据项目 { txtMsg.Text = "缓存内容为Null值!"; } else { txtMsg.Text = info; } }
youzelin 2014-10-29
  • 打赏
  • 举报
回复
引用 14 楼 chentaoyql 的回复:
[quote=引用 12 楼 youzelin 的回复:] 把所有的需要的数据写到一个 TXT 文件里面,然后用 CacheDependency 去监视这个文件,如果发生变化,就重新刷新 Cache,把文件内容加载进去,然后操作,这样只要不变化、以及只要 Cache 不过期,读取的会一直是 cache 里面的内容。不过有一个前提,你需要写一个小程序,去定期的检测 TXT 文件内容的来源地的数据有没有更新,如有更新,直接刷新 TXT 里面的内容。
Why要写Txt,CacheDependency支持很多依赖情况,自己也可以写第三方的支持。 Txt要用HD I/O 必然慢,20年前的老系统估计会这么玩。[/quote] 请你举例,并写一下接近实际代码的 伪代码看看。
比尔咔咔 2014-10-29
  • 打赏
  • 举报
回复
引用 12 楼 youzelin 的回复:
把所有的需要的数据写到一个 TXT 文件里面,然后用 CacheDependency 去监视这个文件,如果发生变化,就重新刷新 Cache,把文件内容加载进去,然后操作,这样只要不变化、以及只要 Cache 不过期,读取的会一直是 cache 里面的内容。不过有一个前提,你需要写一个小程序,去定期的检测 TXT 文件内容的来源地的数据有没有更新,如有更新,直接刷新 TXT 里面的内容。
Why要写Txt,CacheDependency支持很多依赖情况,自己也可以写第三方的支持。 Txt要用HD I/O 必然慢,20年前的老系统估计会这么玩。
sbigwolf 2014-10-29
  • 打赏
  • 举报
回复
dotnet的notify不行么?
youzelin 2014-10-29
  • 打赏
  • 举报
回复
把所有的需要的数据写到一个 TXT 文件里面,然后用 CacheDependency 去监视这个文件,如果发生变化,就重新刷新 Cache,把文件内容加载进去,然后操作,这样只要不变化、以及只要 Cache 不过期,读取的会一直是 cache 里面的内容。不过有一个前提,你需要写一个小程序,去定期的检测 TXT 文件内容的来源地的数据有没有更新,如有更新,直接刷新 TXT 里面的内容。
  • 打赏
  • 举报
回复
学会使用缓存的关键,就是学会调整和设置“缓存依赖项”。 有些人说“把数据保存在内存里,就是缓存”,这其实是根本不懂缓存的。 缓存要尽可能地少占用内存,要尽可能在数据变脏时自动清理,要在内存不足时自动清理,要具有各种缓存依赖项的“级联关联”性。
江南小鱼 2014-10-28
  • 打赏
  • 举报
回复
字典可以缓存到客户端,使用Dirictory<>、HashTable等都可以
phommy 2014-10-28
  • 打赏
  • 举报
回复
应用层不做分布式的话,直接Directory就没问题
assky124 2014-10-28
  • 打赏
  • 举报
回复
简单的就用 Dictionary .net有数据MemoryCache,你也可以从ObjectCache派生自己现实缓存框架
osacar 2014-10-28
  • 打赏
  • 举报
回复
除了nosql这种方案呢?
绿领巾童鞋 2014-10-28
  • 打赏
  • 举报
回复
刚才找了看了ehcache一下,估计做J2EE都是喜欢用框架,高度集成。 本质上,用SOCKET,或者SOAP能解决异构通讯问题,看你是否愿意底层一步一步自己架构。 懒人,还是做懒人吧,框架应该会有的。
1987andy 2014-10-28
  • 打赏
  • 举报
回复
一直都用redis,偶尔也用一些类似key-value结构的数据库

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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