Memcache知识点

基础特性

  1. mc的核心职能是Key-Value内存管理,value最大为1M,不支持复杂的数据结构。
  2. mc不能持久化。
  3. mc支持key过期。
  4. mc持续运行很少会出现内存碎片,速度不会随时间降低。
  5. mc使用非阻塞IO复用网络模型,使用监听线程/工作线程的多线程模型。

 

为什么仅仅string结构

  mc的设计目的是以服务的方式,而不是库的方式管理KV,其设计初衷并不是为了复杂数据结构和持久化。

 

mc的key过期方式

  懒淘汰。

  item不会主动淘汰,只有get时,发现过期,则进行淘汰。

 

假如内存用完了,要不要挤掉已有item

  要。采用LRU淘汰机制。

  常用的淘汰算法是FIFO和LRU:

    • FIFO(first in first out):先set的item先淘汰
    • LRU(least recently used):最近最少使用的item先淘汰

  LRU算法需要增加两个属性:

    • 最近item访问计数
    • 最近item访问时间

  

mc为什么很少有内存碎片

  提前分配内存。没存存储单元只存放一个item

  

mc为什么使用非阻塞IO复用网络模型,使用监听线程/工作线程的多线程模型

  目的是提高吞吐。

  多线程嫩充分利用多核,但是会有锁冲突。

  

mc的key查找方式

  通过hash表查找,通过链表解决hash冲突

  

hash如何扩容

  item总数达到hash长度1.5倍,hash会动态扩容。

  hash扩展,会有一个专门的线程来实施。对hash表中的一部分桶进行枷锁,迁移数据,解锁。

    1.保证不会有长时间的阻塞。

    2.保证item不会在新旧hash表中不一致。

  如果迁移中有新的item插入,则根据桶的位置,

    1.已经迁移,用新的

    2.没有迁移,用旧的

转载于:https://www.cnblogs.com/lqyy/p/11031944.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值