memcached学习之总览

题记

兴之所起,应立马辅以行动,方得始终。最近工作不是那么忙了,想找几份开源代码来提高下自己,一来可以提高下自己的知识面,二来可以学习良好的代码风格。因为之前的工作稍微了解过缓存系统,因此想借这次机会好好学习下缓存系统的设计以及构造,这里主要是想学习下memcached和redis两个系统,作为服务端缓存软件的佼佼者,它们都有着良好的性能以及优秀的代码架构,在接下来的时间里面,我想对两份源码阅读做一个简单的规划,其中memcached源码做粗读,redis用来精读,这样的安排主要是因为时间不是很充裕只能选择个人感觉更加优秀的去花更多的时间。

memcached的简介

一般来说,许多web应用的数据都会选择保存到数据库应用当中,当客户端请求时,便会从数据库中提取数据并展示给客户端。但是当数据量大,并发读高时,数据库的负担会加剧以至于不堪重负,这时候,缓存应用由于根植于内存,其速度远远快于数据库应用,大大减少了IO次数以及网络连接损耗,能够极大程度提高网站并发能力。
memcached即是根据这类需求产生的,它采用key/value模型在内存中来存储数据,主要支持string以及object类型(需要自己做序列化)。

memcached的主要基础

这里面主要来说下memcached的几大编程基础:

  1. 多线程处理
  2. libevent事件模型
  3. 哈希表结构
  4. 基于内存

memcached将服务线程和工作线程相区分,通过多线程的方式来提高处理能力;基于libevent的事件模型将系统底层的select,poll,epoll等进行了封装,用于读取监听连接,读取数据,响应请求等;哈希表结构主要用来快速定位数据,将数据查询操作控制在O(1)复杂度内;基于内存方便快速读写,减少磁盘IO次数,同时采用预分配方式来进行内存操作,更加方便快速。

后续计划

这只是一篇源码阅读前的简单介绍,后续源码阅读主要分为两个大方面,其一是memcached的内部数据组织结构,分别是item的构造以及处理,assoc的构造以及处理,slab的构造以及处理;其二是memcached的数据处理架构以及LRU的处理逻辑,当然新功能还有rebalance等操作,这个系列就不做描述了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值