关闭

memched1.0源码阅读(1)——介绍

标签: c++memched分布式内存存储
487人阅读 评论(1) 收藏 举报
分类:
     1、介绍
     memched是一个高性能的分布式内存对象缓存系统。它通过在内存中数据来减少磁盘io的次数。memched是一个基于键值对存储的hashmap。
     memched可以在内存中存储任意数据,每块数据被称为一个对象(item),它有两个部分组成:key和value。
     memched基于libevent开发,使用了 JudySL http://judy.sourceforge.net/这个第三方库(我不知道其他版本还有没有使用这个库,在1.0版本中使用了这个库)。网络通信部分交给libevent处理,而数据存储部分则交给了JudySL来处理。
     memched中的内存分配和回收由slabs分配器实现。slabs内存分配器类似于Linux中的slabs内存子系统(想了解Linux的slabs子系统可以自行查看相关文档)

     2、启动
     启动memched时使用的命令:
     -d 以守护进程的方式运行memched
     -m 设置memched可以使用的内存的大小,单位是MB
     -l 设置监听的ip地址,通常不用设置
     -p 设置监听的端口,默认在11211监听
     -u 指定用户
     -f 设置增长因子(目前还不大懂)

     3、用法
     memched的几种用法:
     (1)存储。相关命令set、add、replace。告诉服务器存储一些由键值对标识的数据。客户端发送一行命令,后面跟着数据块;
     (2)读取。相关命令get。告诉服务器返回由键值指定的数据。
     (3)删除。相关命令delete。告诉服务器删除某个对象。
     (4)查询状态。相关命令stat。查询服务器的状态。
     (5)其他命令。version、quit等命令。

     4、命令的详细用法
     (1)存储命令
     <command> <key> <flags> <exptime> <bytes>
     <data block>
     command:是set(不存在的时候增加、存在的时候替换)、add(不存在的时候添加)、replace(替换)等
     key:关键字
     flags:其他的一些标志
     bytes:数据块的长度(字节数)
     Data block:数据块

     (2)读取命令
     <command> <key1 key2 ...>
     command:就是get
     key:要读取的数据的关键字,可以包含多个关键字,使用空格隔开

     (3)删除命令
     <command> <key>
     command:delete
     key:要删除的对象的关键字
0
0
查看评论

Memched

memcached 的单个结果集大小 不能超过1M,使用过程中需要注意。
  • x734400146
  • x734400146
  • 2016-08-10 21:47
  • 234

Memcached之——Memcached与Spring提供的cache接口整合

pring 从3.x就提供了cache接口,spring默认实现的缓存是ehcache,spring的cache接口: public interface Cache { String getName(); Object getNativeCache(); ValueWrapper get(Ob...
  • l1028386804
  • l1028386804
  • 2015-09-14 21:43
  • 3454

SSM+Shiro+BootStrap框架整合

  • 2016-09-06 08:46
  • 632B
  • 下载

memched1.0源码阅读(2)——基础数据结构

stats 这个结构表示memched的状态,例如读写的字节数、启动时间等等信息 // 状态 struct stats { // 当前的对象的个数 unsigned int curr_items; // 总的对象的个数 unsigned int tot...
  • NB_vol_1
  • NB_vol_1
  • 2016-05-30 20:13
  • 277

memched1.0源码阅读(3)——运行流程

一、主流程,直接从main函数开始入手。 1、调用settings_init函数,初始化全局变量settings,这个全局变量存放了memched的环境设置。 2、解析输入的参数,设置全局变量setting相关参数。 3、调用item_init函数,进行内存对象(item)的相关设置。 4、调用ev...
  • NB_vol_1
  • NB_vol_1
  • 2016-05-30 20:38
  • 352

memched1.0源码阅读(4)——事件的处理流程

在讲解事件处理之前,先讲解套接字会话的创建: 我们可以看到在套接字会话创建的过程中,调用了一个叫event_set/event_add的函数,这是libevent的接口,它就把套接字感兴趣的事件(例如读写之类的事件)以及相应的事件回调函数(event_handler)添加到libevent中,这样每...
  • NB_vol_1
  • NB_vol_1
  • 2016-05-30 21:45
  • 339

MP4学习(三)ts-mp4源码阅读(1)介绍

MP4Parse源码阅读 为了加深对mp4文件格式的理解,接下来介绍一个开源的MP4解析器MP4Parse,下载地址:https://github.com/macmade/MP4Parse 把工程下载下来之后,进入source目录就可以看见源代码了,有很多cpp文件,最重要的是MP4.Parse...
  • NB_vol_1
  • NB_vol_1
  • 2017-02-27 15:26
  • 315

Tokyo Cabinet TCHDB源码阅读——tchdbnew、tchdbopen及相关函数代码

    在此说明一下:我分析的TC版本是1.4.43,我的阅读流程主要是遵循对TC数据文件的标准操作流程进行分析,即打开数据文件->存放record->获取record->关闭数据文件,期间会涉及到一些相关函数,我会逐个分析。另外,按我粗浅的理解,我觉...
  • gxfan
  • gxfan
  • 2010-04-24 12:18
  • 2831

源码阅读--RxJava(三)

这次来讲讲Rxjava中的Flowable 先看一段代码 Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subs...
  • lxj1137800599
  • lxj1137800599
  • 2017-04-09 23:05
  • 192

elasticsearch 源码阅读

下载源码 地址: 编译 es5.0 之后不再使用maven进行项目构建,开始使用gradle。在使用gradle编译的过程中,也遇到一系列的问题。汇总如下 我下载了gradle的最新版本,3.4,配置了环境变量后,使用idea编译时,抛出该版本es只能使用gradle2.13的版本,。于是...
  • xiongjiezk
  • xiongjiezk
  • 2017-03-07 12:07
  • 323
    个人资料
    • 访问:301755次
    • 积分:6413
    • 等级:
    • 排名:第4489名
    • 原创:328篇
    • 转载:32篇
    • 译文:0篇
    • 评论:63条
    最新评论