使用Memcache实现Session共享(单点登录)的原理

Memcache简介

Memcache是高性能、分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

通过在内存里维护一个统一的巨大的hash表,Memcache能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

 

使用Memcache模拟Session

每一个用户都有一个Session。使用Memcache模拟Session的方法是:使用Guid生成SessionId,然后将SessionId存放到用户的cookie中,并模拟本地Session的滑动过期效果(具体方法是在使用MemCache中的模拟session内容之后,再把模拟session的信息重新写入,并设置绝对过期时间为20min)。

 

Memcache运行原理

原理:Memcached.exe是以守护程序方式运行于一个或多个服务器中,可以看作是Socket服务器端。数据是通过键值对进行存储。Memcache服务器端并没有提供集群功能,而是通过客户端的驱动程序实现了集群配置。可以通过C#的客户端API进行Memcache服务器端的调用。

 

使用C#客户端API操作Memcache服务器端

首先客户端配置多台集群机器的ip和端口的列表。

然后客户端驱动程序在写入之前,首先对key做哈希处理得到哈希值后对总的机器个数进行取余,然后就选择余数对应的机器作为缓存的存储机器(memcache一致性hash原理)。

 

Memcache好处

1.  由于Memcache是操作内存,用Memcached来存储 session 在读写速度上会比文件快很多

2.  实现多个服务器共用session,将这些服务器都配置成使用同一组Memcached服务器就可以

 

Memcache不足

缺点1:缺少持久化机制

session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题,如果要持久化数据,也可以使用新浪开发的MemcacheDB或日本人开发的Tokyo tyrant+Tokyo Cabinet。

缺点2:数据独立,不共享

每台Memcached的数据是独立的,不共享,不复制,出故障的数据丢失了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值