西南IT社区
    • 注册
    • 登录
    • 搜索
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目

    Memcached结构存储

    开源推荐
    memcached结构存储
    1
    1
    102
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • peitengshun1
      peitengshun1 最后由 编辑

      Memcached 可以把数据库调用、API 调用、页面渲染的结果,按照 key-value 结构存储在内存中。通过减轻数据库负载来加速动态 web 应用程序。

      Memcached的数据存储方式被称为Slab Allocator,其基本方式是:先把内存分成很多个Slab,这个大小是预先规定好的,以解决内存碎片的问题。分配给Slab的内存空间被称为Page,默认是1M。一个Slab下可以有多个Page。

      然后把一个Page分成很多个chunk块,chunk块是用于缓存记录的空间。chunk的大小是先有一个基本值,然后根据增长因子(1.25)来增大。slab class 是内存区类别(48byte-1M),每个类别有一个slab classId。

      Memcached 里面保存着slab内空闲的chunk列表,当收到要保存的item的时候,它会根据item的大小去选择一个最合适的slab,然后找到空闲的chunk,把数据放进去。

      446f653b-3f74-4a95-bf54-7c9572bdab2f-image.png

      memcached是一个高性能的分布式内存缓存服务器,memcached在Linux上可以通过yum命令安装,这样方便很多,在生产环境下建议用Linux系统,memcached使用libevent这个库在Linux系统上才能发挥它的高性能。它的分布式其实在服务端是不具有分布式的特征的,是依靠客户端的分布式算法进行了分布式,memcached是一个纯内存型的数据库,这样在读写速度上相对来说比较快。

      memcached的内存分配是预先分配内存,常规的程序使用内存无非是两种,一种是预先分配,一种是动态分配。动态分配从效率的角度来讲相对来说要慢点,因为它需要实时的去分配内存使用,但是这种方式的好处就是可以节约内存使用空间;memcached采用的是预先分配的原则,这种方式是拿空间换时间的方式来提高它的速度,这种方式会造成不能很高效的利用内存空间,但是memcached采用了Slab Allocation机制来解决内存碎片的问题。

      b9dcc8ec-aa1d-45b5-ac8e-e270e894c1a1-image.png

      项目地址:
      https://github.com/memcached/memcached

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post
      使用HTML构建办公软件 使用HTML构建办公软件 使用HTML构建办公软件
      成
      Y
      洋
      书
      Y
      D
      U
      Y
      娇
      玩
      1
      光
      A
      庆
      小
      U
      Y
      L
      I
      Z
      I
      Y
      C
      Z

      西南地区IT社群(QQ)
      云南
      【昆明网页设计交流吧】243627302
      【昆明nodejs交流吧】 243626749
      【VUE】838405306
      【云南程序员总群】343606807
      【昆明UI设计】104031254
      【云南软件外包】15547313
      贵州
      【PHP/java源码/站长交流群】55692114
      四川
      【成都Java/JavaWeb交流】86669225
      【vaScript+PHP+MySql】116270060
      【UI设计/设计交流学习群】135794928
      重庆
      【诺基亚 JAVA游戏博物馆】 559479780
      【PHP,Java,Python,C++接单】 442103442
      西藏
      社群
      昆明网页设计交流吧
      友情链接
      • Funtask
      • Funtask 社区
      • SUWIS
      ©2019-2021 滇ICP备20006698号