用户登录
用户注册

分享至

memcached 1m

  • 作者: 无心伤害36327269
  • 来源: 51数据库
  • 2020-12-18
Memcached创建者Dormando很早就写过两篇文章[1][2],告诫开发人员不要用memcached存储Session。他在第一篇文章中给出的理由大致是说,如果用memcached存储Session,那么当memcached集群发生故障(比如内存溢出)或者维护(比如升级、增加或减少服务器)时,用户会无法登录,或者被踢掉线。而在第二篇文章中,他则指出,memcached的回收机制可能会导致用户无缘无故地掉线。
Titas Norkūnas是DevOps咨询服务提供商Bear Mountain的联合创始人。由于看到Ruby/Rails社区忽略了Dormando那两篇文章所指出的问题,所以他近日撰文对此进行了进一步的阐述。他认为问题的根本在于,memcached是一个设计用于缓存数据而不是存储数据的系统,因此不应该用于存储Session。
这里我能想到的有两种方法。 1、通过nfs共享session存储路径,另一台机器挂载 2、构建session服务器。



  1mb。如果你的数据大于1mb,可以考虑在客户端压缩或拆分到多个key中。
为什么单个item的大小被限制在1m byte之内?
啊…这是一个大家经常问的问题!
简单的回答:因为内存分配器的算法就是这样的。
详 细的回答:memcached的内存存储引擎(引擎将来可插拔…),使用slabs来管理内存。内存被分成大小不等的slabs chunks(先分成大小相等的slabs,然后每个slab被分成大小相等chunks,不同slab的chunk大小是不相等的)。chunk的大小 依次从一个最小数开始,按某个因子增长,直到达到最大的可能值。
如果最小值为400b,最大值是1mb,因子是1.20,各个slab的chunk的大小依次是:slab1 - 400b slab2 - 480b slab3 - 576b …
软件
前端设计
程序设计
Java相关