memcached
文章平均质量分 58
yxnyxnyxnyxnyxn
男
展开
-
memcached源码学习-hashtable
今天来介绍memcached中hashtable部分的源码,hash部分的源码主要分布在assoc.h/c、hash.h/c中,总得来说代码比较简单,这里就稍微介绍一下。 hashtable通常包括哈希函数和解决冲突的方法两个最主要的因素,memcached使用的哈希函数为Bob Jenkins在1996年发明的,定义位于hash.h中,实现在hash.c中,作者与2006年时转载 2012-08-10 17:09:00 · 739 阅读 · 0 评论 -
Memcached一些特性和限制 。在一些严重的情形下(通常应该不会遇到),服务器将在发送这行错误后关闭连接。这是服务器主动关闭连接的唯一情况。
Memcached一些特性和限制•在 Memcached中可以保存的item数据量是没有限制的,只有内存足够• Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程•最大30天的数据过期时间,设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA60*60*24*30控制•最大键长为250字节,大于该长度无法存转载 2012-09-10 11:17:33 · 4980 阅读 · 0 评论 -
memcached-1.4.5安装时候出现错误error: dereferencing type-punned pointer will break strict-aliasing
安装memcached1.4.5时出现错误error: dereferencing type-punned pointer will break strict-aliasing 安装memcached-1.4.5时候出现错误error: dereferencing type-punned pointer will break strict-aliasing rules在issue中发现转载 2012-10-18 15:21:31 · 1709 阅读 · 0 评论 -
memcache中内存管理源码剖析
memcahce采用了内存页面,内存页面上的内存块技术实现了内存管理器,对item的指针采用了hashtable的方法,通过item的key值实现快速定位查找item指针的方法,这里详细剖析一下实现的关键代码. 首先是内存管理,在Slabs.c代码中实现. (1).void slabs_init()void slabs_init(const size_t limit, cons转载 2012-08-08 11:23:57 · 861 阅读 · 0 评论 -
Windows和Linux环境下Memcached安装与配置
一、memcached安装配置windows平台安装1、memcached-1.2.6-win32-bin.zip下载地址: http://code.jellycan.com/memcached/,执行memcached.exe -d install 安装。2、守护进程方式启动:memcached.exe -m 512 -d start-d为守护进程启动,不能指定端口 默认端口转载 2012-08-27 10:33:59 · 640 阅读 · 0 评论 -
Memcached的CAS机制的实现
CAS,又称Compare-and-Swap,代表一种原子操作。Memcached的CAS机制解决的问题及其原理:1. 实现了Check-and-Set原子操作功能;2. 其使用方式为:首先使用gets指令一个key-value及key对应value的版本号;其次操作产生新的value值;最后使用cas指令重新提交key-value,并附带刚刚获得到的版本号;3. 当服务端判断ca转载 2012-08-17 14:21:22 · 2093 阅读 · 0 评论 -
memcached 之token_t
typedef struct token_s { char *value; size_t length;} token_t;static size_t tokenize_command(char *command, token_t *tokens, const size_t max_tokens) { char *s, *e; size_t ntokens = 0原创 2012-08-17 16:37:31 · 1253 阅读 · 0 评论 -
memcached_1.4.14之process_get_command解析
/* ntokens is overwritten here... shrug.. */static inline void process_get_command(conn *c, token_t *tokens, size_t ntokens, bool return_cas) { char *key; size_t nkey; int i = 0; item原创 2012-08-17 17:12:51 · 1058 阅读 · 0 评论 -
memcached 结构体详解
/* * NOTE: If you modify this table you _MUST_ update the function state_text *//** * Possible states of a connection. */enum conn_states { conn_listening, /**< the socket which listens for原创 2012-08-18 17:14:01 · 965 阅读 · 1 评论 -
memcached iov msglist
最近研究memcached 的iov部分,把理解的相关东西做个笔记,防止忘了,有错误之处也欢迎各位指摘。微笑struct msghdr{void *msg_name; /* Socket name */int msg_namelen; /* Length of name */struct iovec *msg_iov; /* Data blocks */int msg_iovlen;原创 2012-09-11 19:58:02 · 797 阅读 · 0 评论 -
Memcached 结构分析之各个结构体详解(包括set参数)
Memcached 结构分析 Memcached是一个分布式的内存缓存库,正好自己想写个cache的模块,那么就偷偷师吧。 功能库看的是实现原理和思路,性能库看的是实现细节,memcahed是属于一个看性能的库(实现cache功能的模块很多,但是性能就有高低了) 1、memcached的数据交互协议 memcached是分布式的内存缓存服务器,它是通过转载 2012-08-17 09:01:00 · 1896 阅读 · 0 评论 -
memcached源代码之process_get_command add_msghdr iov
本文针对memcached 1.21 for windows(主要原因是Linux实在缺乏一种简单易用的C++ IDE,使用gdb调试我会发疯的,code::block挺不错的,但是感觉还是不如VC,我非常喜欢VC/VS的调试功能,其中几个特性包括随便拖变量到watch窗口,在watch窗口可以编辑被观察的变量,鼠标悬停时显示变量的值。这几个特性是我希望一个调试器所应该必备的),其源代码可在htt转载 2012-08-14 11:48:38 · 1358 阅读 · 0 评论 -
memcached 参数详解
memcached 1.4.2 -p 监听的TCP端口(默认: 11211) -U 监听的UDP端口(默认: 11211, 0表示不监听) -s 用于监听的UNIX套接字路径(禁用网络支持) -a UNIX套接字访问掩码,八进制数字(默认:0700) -l 监听的IP地址。(默认:INADDR_ANY,所有地址转载 2012-08-13 15:06:19 · 982 阅读 · 0 评论 -
Memcached drive_machine 函数分析_process_update_command
关于Memcached的文章并不少,想更多了解Memcached的源代码,请看参考文献。这些文献对于drive_machine()函数的描述比较简略,我们只是把未展开的分析展开。补充几篇文章都没有细化的地方。memcached的核心使用的是libevent来处理网络IO事件,libevent需要指定一个主循环函数,由这个函数对IO事件进行集中处理。 conn_new()用于转载 2012-08-14 09:18:54 · 1599 阅读 · 0 评论 -
memcached之网络处理流程之conn_new_cmd
memcached主要通过设置/转换连接的不同状态,来处理事件.static int server_socket(int port, enum network_transport transport,FILE *portnumber_file) {listen_conn_add = conn_new(sfd, conn_listening, EV_READ | EV_PERSIST,转载 2012-08-14 10:20:59 · 1537 阅读 · 1 评论 -
memcached源码剖析之内存管理
C语言的内存管理一直是开发者绕不过去的坎,像memcached这种接收大量请求的框架来说,频繁的内存调用和内存泄露是名副其实的性能杀手。malloc/free有三大缺点:1.容易造成内存泄露;2.频繁调用会造成大量内存碎片无法回收重新利用,降低内存利用率;3.作为系统调用,其系统开销远远大于一般函数调用。现在最常用的内存管理方案是使用内存池替代malloc/free调用,内存池方案的基本思想是预先转载 2012-08-14 16:57:09 · 1393 阅读 · 0 评论 -
Memcached源码分析之内存管理篇之item结构图及slab结构图
.Memcached源码分析之内存管理篇 博客分类: linuxc .使用命令 set(key, value) 向 memcached 插入一条数据, memcached 内部是如何组织数据呢 一 把数据组装成 itemmemcached 接受到客户端的数据后, 把数据组装成 item, item 的格式如下: 图1 struct item 的结构转载 2012-08-15 16:52:02 · 6535 阅读 · 2 评论 -
1.4.13 chunk大小
Breakpoint 1, slabs_init (limit=67108864, factor=1.25, prealloc=false) at slabs.c:100100 unsigned int size = sizeof(item) + settings.chunk_size;(gdb) p size$1 = (gdb) n102 mem_原创 2012-09-11 20:26:39 · 665 阅读 · 0 评论 -
memcached1.4.14 get conn_state 跟踪
Breakpoint 1, drive_machine (fd=, which=, arg=0x7fffe8013540) at memcached.c:37533753 switch(c->state) {(gdb) p c->state$2 = conn_read(gdb) n3807 res = IS_UDP(c->transport) ?原创 2012-09-21 10:18:41 · 874 阅读 · 0 评论 -
memcached 1.4.15 make error: dereferencing type-punned pointer will break strict-aliasing rules 解决方法
http://ihacklog.com/post/memcached-compilation.htmlsudo wget http://johntech-resource.googlecode.com/files/fix-strict-aliasing.patchsudo patch memcached.h fix-strict-aliasing.patch转载 2013-02-19 10:04:09 · 5248 阅读 · 0 评论 -
Memcached深度分析
Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。关于这个东西,相信很多人都用过,本文意在通过对memcached的实现及代码分析,获得对这个出色的开源软件更深入的了解,并可以根据我们的需要对其进行更进一步的优化。末了将通过对BSM_Memcache扩展的分析,加深对memcached的使用方式转载 2012-08-07 15:51:44 · 700 阅读 · 0 评论 -
Memcached源码分析(线程模型)
目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之先看下memcahced启动时线程处理的流程memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程无论是主线程还是worke转载 2012-08-13 13:50:25 · 669 阅读 · 0 评论 -
mcblaster 测试
http://software.intel.com/en-us/articles/enhancing-the-scalability-of-memcached转载 2013-02-20 08:54:02 · 1247 阅读 · 0 评论