首页 新闻 会员 周边 捐助

.net Memcached获取缓存及清理缓存不成功。

0
悬赏园豆:100 [已解决问题] 解决于 2016-03-04 14:10

1、现有服务器若干,缓存服务器一台,在缓存服务器上 有2个端口是Memcached缓存。主要功能是获取缓存中的密码,与客户登录时比较。和A、B2个项目,其中A项目为客户端,实现用户登录,B项目为后台管理项目。

2、在我机器上跑2个项目,2个项目均有缓存的获取及清除代码,同时获取2个端口的缓存信息。

暂时命名为端口1和端口2。其中A项目的清除缓存是绝对成功的。

情况:

首先更改某用户密码。

当B项目执行清除缓存时,再获取缓存,发现端口1和端口2无缓存,同时去执行A项目获取缓存,发现端口1和端口2缓存存在。

1、此时,登录端口1线上程序,发现端口1的程序可以登录,即得出,他的缓存已被清除,直接获取了数据库的正确信息。

2、登录端口2线上程序,发现端口2的程序不能登录,即得出,他的缓存未被清除。

3、登录本地程序(本地获取的缓存为端口1),因为可设断点查看,可得出获取到缓存,对比未通过。即登录失败。增加获取端口2代码,测试,也有缓存。

问题:

1、获取同一台服务器的缓存,A B 2个项目同时获取缓存,获取的缓存结果不一致。

2、B项目清除缓存时,造成了部分服务器的A项目可以登录(经测试,可以登录的服务器均为获取端口1的缓存),部分不能登录(其中也有获取端口1的缓存:例本地测试为获取端口1)

3、A项目清除缓存时,所有项目均可以登录,但后台可以获取缓存。

请各位大神帮忙找找问题原因。

苍的主页 | 初学一级 | 园豆:103
提问于:2016-03-01 09:59
< >
分享
最佳答案
0

好像是因为应用池名称重复的问题。

| 初学一级 |园豆:103 | 2016-03-04 14:05
其他回答(2)
0

你这个会不会是key不对啊?

1.只要能放进去然后取出来,这个缓存服务器就是可以用的

2.缓存不保证你放进去的就是你取出来的.取出来的只能是最后放进去的

3.缓存不保证放进去一定能取出来.

4.如果你要这种保证需求.你需要的是持久化(数据库),而不是缓存

收获园豆:50
吴瑞祥 | 园豆:29449 (高人七级) | 2016-03-01 10:04

不存在key不对的情况。AB项目测试很多次,key为一次复制,多次粘贴。

支持(0) 反对(0) | 园豆:103 (初学一级) | 2016-03-01 10:06
0

缓存时间设的太短了?

收获园豆:50
刘宏玺 | 园豆:14020 (专家六级) | 2016-03-01 11:05

设置的6小时,不是这问题。

支持(0) 反对(0) | 园豆:103 (初学一级) | 2016-03-01 11:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册