首页新闻找找看学习计划

缓存自动清除

0
悬赏园豆:10 [已解决问题] 解决于 2013-12-25 11:16

背景:

数据通讯过程中,有时有重复通信。5秒中内看作重复数据不再存储。1个数据在内存中只存储5秒,5秒过后数据自动清理。

实现:

在WinForm下有没有类似WEB下的Cache的数据结构,可以实现缓存变量的有效期限。

e.g.例如5秒,5秒过后该缓存自动清除。

 


不想借助第三方的Cache,本就一个不大的工程,数据量不大。

lucika.zh的主页 lucika.zh | 初学一级 | 园豆:51
提问于:2013-11-18 10:16
< >
分享
最佳答案
0

1.定义一个缓存的私有字段

2. 定义一个时间字段,记录缓存的保存时间

3. 定义一个属性,在Get中进行当前时间和之前的保存时间的比较.根据条件返回缓存字段或者重新查询,跟新缓存字段,然后然会更新后的值.

4. 附加一些别的操作,详细的我就不说了.这种方式比较简单

收获园豆:5
平常心队长 | 小虾三级 |园豆:1113 | 2013-11-18 10:46

最初想通过字典的结构方式去实现,Get时对数据进行处理。

这种方式是被动的,只有当访问时才会进行数据有效性检查。有没有更加主动的方式呢,不访问也会清理过期的数据。类似Cache的结构。

lucika.zh | 园豆:51 (初学一级) | 2013-11-18 15:47

@lucika.zh: 没有访问也就没必要查询和更新数据了吧?

平常心队长 | 园豆:1113 (小虾三级) | 2013-11-19 09:24

@zhangliming: 这样是否有内存问题,不及时释放?

lucika.zh | 园豆:51 (初学一级) | 2013-11-20 16:10

@lucika.zh: 额,应该会有些问题的.考虑下一弱引用吧,结合一下使用.具体的你看下这篇文章.

http://www.cnblogs.com/linzheng/archive/2012/04/13/2445064.html

平常心队长 | 园豆:1113 (小虾三级) | 2013-11-20 17:03

@zhangliming: 先谢谢了。

lucika.zh | 园豆:51 (初学一级) | 2013-11-21 08:59
其他回答(1)
0

static类型的hash表,然后自己去实现一个添加,删除的方法,过期时间设置为5秒钟,自己封装下就可以实现撒

收获园豆:5
qisheng722 | 园豆:92 (初学一级) | 2013-11-18 17:30

谢谢。

支持(0) 反对(0) lucika.zh | 园豆:51 (初学一级) | 2013-11-20 16:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册