memcached实现多个web应用session共享

memcached是一个Client Server结构的远程Cache实现。

Server是用C写的,提供了多种语言的客户端API,包括Java, C#, Ruby, Python, PHP, Perl, C等多种语言。

memcached主要使用在Shared Nothing Architecture中。应用程序通过客户端API,从memcached server存取数据。

典型的应用,比如,用memcached作为数据库缓存。

也常有这样的用法,用memcached存放HTTP Session的数据。具体做法是包装Session Interface,截获setAttribute(), getAttribute()方法。

MemcachedSessionWrapper {

Object getAttribute( key ){

return memcachedClient.get (session.getId() + key);

}

void setAttribute( key, value ){

memcachedClient.setObject(session.getId() + key, value);

}

}

不同计算机上的应用程序通过一个IP地址来访问memcahced Server。

同一个key对应的数据,只存在于一台memcached server的一份内存中。

memcached server也可以部署在多台计算机上。Memcached通过key的hashcode来判断从哪台memcached server上存取数据数据。我们可以看到,同一个key对应的数据,还是只存在于一台memcached server的一份内存中。

所以,memcached不存在数据同步的问题。这个特性很关键,我们后面讲到Cluster Cache的时候,就会涉及到数据同步的问题。

memcached由于是远程Cache,要求放到Cache的Key和Value都是Serializable。

远程Cache,最令人担心的网络通信开销。据有经验的人说,memcached网络通信开销很小。

memcached的API设计也是远程通信友好的,提供了getMulti()等高粒度的调用方法,能够批量获取数据,从而减少网络通信次数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值