• 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.没有迁移,用旧的

  • 相关阅读:
    【Android】 分享一个完整的项目,适合新手!
    Android笔记:Fragment与ViewPager组合时,如何在FragmentActicity获取Fragment对象
    android 获取日期
    Java: 分解List<HashMap<String, String>>
    android ExpandableListView实现不同的布局
    android: activity切换之效果
    android: activity之间切换的抽屉效果
    android 获取适配的bitmap等相关
    Eclipse改变外观,护眼模式
    安装 NoMachine(NX) client and server
  • 原文地址:https://www.cnblogs.com/lqyy/p/11031944.html
Copyright © 2020-2023  润新知