新足迹

 找回密码
 注册

精华好帖回顾

· NSW悉尼私校大汇总(呕心沥血填坑完毕, 欢迎补充和评论) (2009-12-1) 旋木 · 西班牙海鲜饭试验版 (2005-12-23) 小米
· 撞鬼了 (18岁以下读者,请自觉绕道) (2016-10-22) yasuko · 读帖随感 - 算是过来人 (2014-8-17) acoke
Advertisement
Advertisement
查看: 1476|回复: 13

----------- 有在Web Application里面整合过Memcached的同学吗? ----------- [复制链接]

发表于 2012-6-15 18:09 |显示全部楼层
此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不知道Memcached和asp.net的session怎么结合起来使用?


谢谢!
Advertisement
Advertisement

特殊贡献奖章

发表于 2012-6-15 18:43 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整

不知道。asp.net 没有memcached的library吗

评分

参与人数 1积分 +2 收起 理由
梦呓人 + 2

查看全部评分

发表于 2012-6-18 10:43 |显示全部楼层
此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2012-6-15 17:43 发表

不知道。asp.net 没有memcached的library吗



kr,网上有现成的client provider可以用,运行也OK,我只是想知道一般是怎么和譬如的浏览器session一起使用的。PHP里面的例子你能举一下吗?

发表于 2012-6-18 12:17 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这方面有不少选择,memcached前两年还行,现在好像没有人关心它了。

http://memcachedproviders.codeplex.com/releases/view/10468

原来ms的velocity性能不行,现在roll in到appfebric好像还可以,起码有些人在维护,也有些人在用。

原来我们在这方面有过research,但发现它对我们用处不大,主要因为我们编程的方式严禁session,这样unified cache object没什么存在的必要。

我感觉这些framework的好处主要是原来single node的app,scale up到多个nodes,用到他们会减轻很多开发量.

我的建议如果是能避免,尽量不用,毕竟它是个overhead,尤其是在新的project上。

评分

参与人数 1积分 +2 收起 理由
梦呓人 + 2 偶对你的景仰如滔滔江水

查看全部评分

发表于 2012-6-18 13:30 |显示全部楼层
此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 无视 于 2012-6-18 11:17 发表
这方面有不少选择,memcached前两年还行,现在好像没有人关心它了。

http://memcachedproviders.codeplex.com/releases/view/10468

原来ms的velocity性能不行,现在roll in到appfebric好像还可以,起码有些人在维护,也有些 ...





大哥,你终于来啦! 这东西是我老板说要用,我照做就是了



我的疑问是:Memcached的Set,Get很好理解,但它同Http Session有什么关联呢?后者也可以set&get,只是浏览器一关或者服务器端设置的session expire时间一过内容就没了,Memcached的作用是不是用服务器来存储内容?还是我的理解不对啊

发表于 2012-6-18 15:12 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 梦呓人 于 2012-6-18 12:30 发表





大哥,你终于来啦! 这东西是我老板说要用,我照做就是了



我的疑问是:Memcached的Set,Get很好理解,但它同Http Session有什么关联呢?后者也可以set&get,只是浏览器一关或者服务器端设置的session expire时间一过内容就没了,Memcached的作用是不是用服务器来存储内容?还是我的理解不对啊


如果老板让你做,就这么做吧

传统asp.net中,如果session不是用sql server,它总是work在一个node上,nodes不能get其他node set的值,这就是典型stick node的问题。

memcached是一种distributed cache,在一个node上set的,可以在其他node上get,node之间的同步是framework的工作,developer不用关心,这种方式可以比较自由的使用session,尤其对legacy system,很有效。

[ 本帖最后由 无视 于 2012-6-18 14:14 编辑 ]

评分

参与人数 1积分 +3 收起 理由
梦呓人 + 3 恭喜恭喜

查看全部评分

Advertisement
Advertisement

发表于 2012-6-19 12:14 |显示全部楼层

回复 无视 6# 帖子

此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
大哥, 我现在要用unique的session id 作为key存入memcache;


首先看到每次:Session.SessionId都在变,所以我加入了这个在global.asax


private void Session_Start(Object sender, EventArgs e)
        {            
            Session["init"] = 0;
        }


现在的Session.SessionId是可以固定下来了,问题是Session Expire之后再load页面,SessionId还是原来expire之前的那个,这不是我希望的。


我可以在web.config里的<sessionState>中加入cookieless="true"和regenerateExpiredSessionId="true",但结果造成我的URL里面包含了SessionId,这也不是我想要的。



大哥请问我应该怎么做?我在Session_End event里面加了Clear/Abandon,但expire之后再刷新还是拿到原来的sessionid

发表于 2012-6-19 12:57 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 梦呓人 于 2012-6-19 11:14 发表
大哥, 我现在要用unique的session id 作为key存入memcache;


首先看到每次:Session.SessionId都在变,所以我加入了这个在global.asax


private void Session_Start(Object sender, EventArgs e)
        {           ...


Session_End event里面这么写

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

就会拿到不同的session id.

http://support.microsoft.com/kb/899918

发表于 2012-6-19 13:50 |显示全部楼层
此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 无视 于 2012-6-19 11:57 发表


Session_End event里面这么写

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

就会拿到不同的session id.

http://support.microsoft.com/kb/899918




MVC里面出现exception: "Response is not available in this context."

发表于 2012-6-19 13:52 |显示全部楼层
此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我也用了SessionIDManager.RemoveSessionID,好像也不能产生新的session id

发表于 2012-6-19 13:54 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 梦呓人 于 2012-6-19 12:50 发表




MVC里面出现exception: "Response is not available in this context."


sorry, pls try HttpContext.Request.Cookies
Advertisement
Advertisement

发表于 2012-6-19 13:55 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 梦呓人 于 2012-6-19 12:52 发表
我也用了SessionIDManager.RemoveSessionID,好像也不能产生新的session id


原理应该是一样的,都是remove/reset cookie

发表于 2012-6-19 15:09 |显示全部楼层
此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 无视 于 2012-6-19 12:54 发表


sorry, pls try HttpContext.Request.Cookies




码兄,也一样,Request is not available in this context


如果是在Global.asax的Session_End event的话,应该Request和Response都失效了。





我其实就想拿到一个新的/unique的id, 我当然可以自己实现一个session_id,譬如用Guid。 问题就是本身的SessionId似乎已经可以利用了,但是要么每次postback都变化(不在session_start里初始化session variable), 要么就是一致不变

发表于 2012-6-19 17:05 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 梦呓人 于 2012-6-19 14:09 发表




码兄,也一样,Request is not available in this context


如果是在Global.asax的Session_End event的话,应该Request和Response都失效了。







我其实就想拿到一个新的/unique的id, 我当然可以自己实现一个session_id,譬如用Guid。 问题就是本身的SessionId似乎已经可以利用了,但是要么每次postback都变化(不 ...



my bad, try HttpContext.Current.Request.Cookies

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部