首页 新闻 会员 周边

关于asp.net cache的疑问

0
悬赏园豆:5 [已解决问题] 解决于 2014-08-05 11:59

最近在使用asp.net cache 过程中遇到一个问题是:
用cache 缓存了数据,但是不同的用户(具有不同权限,本应该看到不同的信息)在不同的客户端进行操作,返回的数据确实同一份cache数据;
感觉cache[]好像是所有会话共享一份数据的形式;与session[]的形式还是不同的;

session["user"]返回的是与当前用户相关的用户信息;

cache["data"]返回的数据是一份共享,同样的数据信息;

想确认一下,若在实际项目中使用cache 是否只能对通用的数据【也可能是整个数据库表的数据】信息进行缓存,而不能对每个用户单独的查询结果进行缓存呢?

如果要实现对每个用户的查询数据进行缓存,是否是要自我实现一个机制,会对服务器造成很大的内存压力吗?
希望大神,或者实际项目中使用过缓存的同学,能给出一些建议,或者给一个项目案例。

性能疯子的主页 性能疯子 | 菜鸟二级 | 园豆:206
提问于:2014-08-05 10:09
< >
分享
最佳答案
0

每个用户的key不同就可以达到独立缓存的效果。缓存不适合经常性变动的数据。

收获园豆:1
清海扬波 | 小虾三级 |园豆:825 | 2014-08-05 10:23

感谢各位的回复,讲的都挺有道理的,缓存不适合经常性变动的数据这点是值得确认的;

已经查阅资料解决问题,感谢各位

性能疯子 | 园豆:206 (菜鸟二级) | 2014-08-05 12:01
其他回答(4)
0

cache是基于全局(如application)的,所以会有你的这个问题发生。

要做基于session的cache~~~这个貌似价值不大,还不如直接写入session。

真的要这样实现,可以:

1、改写cache机制,使之支持session

2、对key进行识别处理,增加一个比如sessionid或当前用户id的方式。

收获园豆:1
519740105 | 园豆:5810 (大侠五级) | 2014-08-05 10:26
0

每个用户数据使用不同的缓存Key,缓存建议使用mecached。

推荐阅读:Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作

收获园豆:1
dudu | 园豆:31007 (高人七级) | 2014-08-05 10:32
0

缓存就是keyvalue,只要是是这个key取出的就是那个value不会变的``

收获园豆:1
吴瑞祥 | 园豆:29449 (高人七级) | 2014-08-05 11:09
0

举个例子 全局的权限是在一个catch中

但是每个用户 拥有的权限 id 在session中

然后显示的时候通过查询 值显示 id在session中的 权限项

 

解决方案2

缓存的key 带有用户 id的信息 按用户隔离

收获园豆:1
小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2014-08-05 11:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册