memcached缓存服务器

       最近公司开发了一个app项目。使用了nginx+memcached+tomcat+mysql的架构。由于本人后台项目负责人。任务就落到了我的手里。其他的一切顺利,但是刚开始配置memcached的时候,出现了session登录不共享的bug。

      该bug简单重现是 一个一个浏览器的两个tab。一个tab a来登录,另一个tab  b获取登录后的数据。但是当a登录进去后,b获取数据的时候还是出现用户未登录,反复调试程序,还是出现问题。因为原来使用这套配置配置过。但是不知道怎么了,在这里就是配置失败。真是百思不得其解。

     更奇葩的是,当我更换jar包,之后,程序尽然实现了session共享。真是  暮然回首,那人却在灯火阑珊处。总之明白了一些道理。做开发的不能急,发生了问题要好好的想想。不要太依赖以往的经验。

     说了那么多 。接下来就简单介绍下memcached吧

   

       本项目使用memcached主要是使用memcached的session共享功能。我在nginx中配置了负载均衡upstream 。纠结nginx的四种session共享方式。我选择了memcached。因为他是把session保存在内存中。当我重启项目的时候,不用担心session丢失,使得用户被迫下线。还有一个比较好的session共享方式是 ip_hash ,配置也简单,就是在负载均衡的配置中 加上ip_hash即可。这种方式是更具ip的散列值来分配tomcat的。当一个局域网的人数特别多的时候,会造成一个tomcat负载过重。

     memcached的主要功能是数据的缓存功能。将应用程序调用数据库,获取到的数据缓存到memcached中去。当下次再次获取的时候,直接从memcached中获取(通过复杂的算法)。

   配置 nginx

  

  配置 tomcat

  

  jar包(特别重要 如果jar包不对 可能会出现各种问题)


 memcached的内存管理

      memcached使用slab来管理内从。slab会将内存分成逐渐递增的slab集合。然后在一个集合中分配了多个相同大小的slab。当要存储数据的时候。会将数据存储到合适的slab集合中去。如果该集合中没有足够的slab,则slab会再次分配slab。


memcached 客户端命令

  memcached 使用telnet程序来访问memcached的命令  telnet 127.0.0.1 11211 

  stats  查看memcached的信息

  stats items

   

 

还有一些其他命令 如有兴趣 可以查看memcached的官方文档。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值