阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Session共享–实现Memcache集群

86次阅读
没有评论

共计 1591 个字符,预计需要花费 4 分钟才能阅读完成。

Memcache 在 session 共享中起着重要的作用,因为咱们所有的数据都是放到这里面的,所以这里咱们肯定不能只用一台 Memcache,需要将 Memcache 集群,我这里是通过代码实现的。整体的思路就是在初始化的时候,将所有 Memcache 的地址全部读取出来,在存数据的时候向所有 Memcache 中都放值,在取的时候,随机一台读取,如果没有,则轮询读,直到读取到值为值。下面上具体的代码。

1. 放值

/**

  * 将数据存储到 Memcached 中

  * @param key 键值

  * @param value 对象

  *

  * 此方法存储的 value 在 Memcached 中永远都不会过期,只有当 Memcached 的内存占满时

  * 才会根据 Memcached 自身的最长时间不使用的算法将其中的一些 value 清除

  */

 public void setMemcached(String key, Object value) {

                                                                             

  for(int i=0;i<mcpool.size();i++)

  {

  MemCachedClient mc=(MemCachedClient)mcpool.get(i);

  mc.set(appName + key, value);

  }

 }

2. 取值

/**

  * 随机从一台服务器上查找对应 key 的值

  * 若有,则返回

  * 若没有,则遍历所有服务器

  */

 public Object getMemcached(String key) {

                                                               

  int num=(Math.abs(new Random().nextInt()))%mcpool.size();

  Object object=null;

  object=((MemCachedClient)mcpool.get(num)).get(appName + key);

  if(object!=null)

  {

  return object;

  }

  for(int i=0;i<mcpool.size();i++)

  {

  MemCachedClient mc=(MemCachedClient)mcpool.get(i);

  object=mc.get(appName + key);

  if(object!=null)

  {

    return object;

  }

  }

  return object;

 }

注:大家都知道,memcache 存的都是序列化后的值,取的时候,再用反序列化的方式读取出来。我们这里用的 writeObject 和 readObject。但也是因为这个原理,我们在存各个 webapp 自己的应用的时候,由于无法获得对应的 class 文件,导致无法反序列化读出数据。这个问题的解决方案在后面给出。

Memcached 的详细介绍 :请点这里
Memcached 的下载地址 :请点这里

参考阅读:

Memcached 安装及启动脚本 http://www.linuxidc.com/Linux/2013-07/87641.htm

PHP 中使用 Memcached 的性能问题 http://www.linuxidc.com/Linux/2013-06/85883.htm

Ubuntu 下安装 Memcached 及命令解释 http://www.linuxidc.com/Linux/2013-06/85832.htm

Memcached 的安装和应用 http://www.linuxidc.com/Linux/2013-08/89165.htm

使用 Nginx+Memcached 的小图片存储方案 http://www.linuxidc.com/Linux/2013-11/92390.htm

Memcached 使用入门 http://www.linuxidc.com/Linux/2011-12/49516p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计1591字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中