返回信息流Memcached替换内存数据有2种算法吧
1. 根据设定的超时时间,当内存满时候,
a.如果部分数据超时了,没有其他新数据需要往内存写时候,是自动更新该数据呢,还是在get时候,重新set再get?
b.如果部分数据超时了,此时并有其他数据需要载入到内存中了,这超时的数据是要被删除,然后被新载入的数据替换吧?
2. 根据数据的命中率,当内存满时候,删除命中率低的那部分数据,然后写入新的数据。
这是一条镜像帖。来源:北邮人论坛 / www-technology / #25489同步于 2014/5/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
memcached如何替换内存数据
youziboy
2014/5/8镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
更新N多行时候, 应该是直接在update之后,重新去set一次吧。
【 在 fallback 的大作中提到: 】
: 同求解答 更新n多行数据库记录时 memcached的执行流程
mc在get的时候才会去校验是否超时,称作lazy expiration。
mc在set进行内存分配是,优先使用已超时的chunk,空间不足时,采用LRU机制分配chunk。
这里chunk是实际存放数据的内存。
具体LRU机制是什么样的呢?
【 在 aa123456 的大作中提到: 】
: mc在get的时候才会去校验是否超时,称作lazy expiration。
: mc在set进行内存分配是,优先使用已超时的chunk,空间不足时,采用LRU机制分配chunk。
: 这里chunk是实际存放数据的内存。
【 在 youziboy 的大作中提到: 】
: 具体LRU机制是什么样的呢?
mc的每个slab都会维护一个lru双向链表(节点是chunk),最近访问的总是放到头部,那么尾部的就是牺牲品了
这样的话,那岂不是实时要对这个链表进行更新。
如果memcached放入内存的数据有几千万条,这个链表的维护会影响性能么?
【 在 aa123456 的大作中提到: 】
:
: mc的每个slab都会维护一个lru双向链表(节点是chunk),最近访问的总是放到头部,那么尾部的就是牺牲品了
双向链表,o1时间复杂度
【 在 youziboy (怪人) 的大作中提到: 】
: 这样的话,那岂不是实时要对这个链表进行更新。
: 如果memcached放入内存的数据有几千万条,这个链表的维护会影响性能么?
通过『我邮2.0』发布