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的数据是独立的,不共享,不复制,出故障的数据丢失了。