随笔分类 -  memcached

memcached(十三)注意事项
摘要:一些使用上遇到过的问题。mc key限制。 长度限制250;不能有空格,中文。mc超时时间设置。过大,会表现为set进去成功, 但get不出来。如果mc有打印verbose级日志的话会显示超时: NOT FOUND 111 FOUND KEY 111 -nuked by expire原因是:Ex... 阅读全文

posted @ 2015-07-08 19:54 Emmerich.Luang 阅读(376) 评论(0) 推荐(0)

memcached(十二)监控
摘要:1、可以使用MemAdmin(PHP环境)。2、telnet/nc到mc中, 然后stats命令(stats slabs/stats items)。3、使用源码上附送的工具(memcached-tool)https://github.com/memcached/memcached/tree/mast... 阅读全文

posted @ 2015-07-08 19:53 Emmerich.Luang 阅读(154) 评论(0) 推荐(0)

memcached(十)动态扩容
摘要:HASH的扩容 一般来说,hash容器都会在初始化的时候创建一块空间用于存放对象,对象的数量到达临界值后扩容整个空间。而不是一边增加/删除对象一边分配空间。本人根据是否阻塞,区分为静态扩容和动态扩容。静态扩容 参考java.util.HashMap的实现。在put方法中, public V... 阅读全文

posted @ 2015-07-08 19:52 Emmerich.Luang 阅读(750) 评论(0) 推荐(0)

memcached(九)--LRU
摘要:memcached通过LRU算法(least recently usage)把过期的对象淘汰掉。 简单点说,每个slab自己就是一个双向链表。热数据在链头,冷数据在链尾。创建对象的时候,把这个对象放到链头。当创建对象时分配内存不足,则把链尾的冷数据淘汰掉。同一个对象更新会把对象的时间属性更新。... 阅读全文

posted @ 2015-07-08 19:50 Emmerich.Luang 阅读(559) 评论(0) 推荐(0)

memcached(八)-- set指令内部实现
摘要:在一个set指令传输到memcached后:set abc 0 3600 5hello memcached是怎么样执行set/add等对象的咧? 首先从memcached启动后,要先监听端口,监听到有对应的动作后,执行指令。从源码中,堆栈是这样子:main_base从启动到监听main——>... 阅读全文

posted @ 2015-07-08 19:48 Emmerich.Luang 阅读(531) 评论(0) 推荐(0)

memcached(七)--常用指令抓包分析
摘要:使用spymemcached客户端,通过wireshark抓包,更清晰的看到memcached的命令。 先来一个简单的demo:package spymc;import java.io.IOException;import java.net.InetSocketAddress;import n... 阅读全文

posted @ 2015-06-24 20:50 Emmerich.Luang 阅读(750) 评论(0) 推荐(0)

memcached(五)--源码分析,启动
摘要:源码memcached.c中,main入口函数。第一步,根据memcached的启动参数做校验参数、配置。main函数中,几乎600行代码都是这些参数校验。吐槽一个。第二步,初始化。 2.1:初始化主线程的libevent。main_base = event_init(); 2.2:初始化m... 阅读全文

posted @ 2015-06-16 20:39 Emmerich.Luang 阅读(382) 评论(0) 推荐(0)

memcached(六)--spyMemcached的get操作
摘要:我们使用memcached客户端进行get、set还是比较方便的。比如说一个get的操作: MemcachedClient c = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); c.ge... 阅读全文

posted @ 2015-06-11 21:17 Emmerich.Luang 阅读(2452) 评论(0) 推荐(0)

memcached(十一)magent实现高可用
摘要:可用性 可用性是指系统一段时间内没故障的时间占比多少。比如说在1个小时里面,出现了故障系统出现5xx、4xx的http响应码。用了3分钟才修复问题。那么这1个小时内这个系统的可用性就是(60-3)/60=95%。 系统可用性:(总时间-故障时间)/总时间 * 100%memcached单点问题、... 阅读全文

posted @ 2015-06-02 13:50 Emmerich.Luang 阅读(721) 评论(0) 推荐(0)

memcached(四)--重点参数说明
摘要:对上一章列出了全部参数。其中有60%是不怎么用到的。这一章节选取出我觉得重要的参数出来细讲。常用参数p 指定端口 指定tcp监听端口。默认是11211。可是当一台机器需要跑多个memcached实例的时候,或者网维只能特定某些端口可用,这个端口是一定修改的。 举个例子,启用memcached并且... 阅读全文

posted @ 2015-05-27 18:18 Emmerich.Luang 阅读(426) 评论(0) 推荐(0)

memcached(三)--参数
摘要:memcached的一些启动参数,举个例子:memcached -p 11212 -d -u root启动memcached的时候,这些-p,-d,-u参数。 从源码中看得出来,启动参数有下面这些: -p TCP port number to listen on (defau... 阅读全文

posted @ 2015-05-27 16:43 Emmerich.Luang 阅读(492) 评论(0) 推荐(0)

memcached(二)--安装
摘要:libevent简述很多网上的资料都说, memcached需要libevent。libevent是什么呢?libevent就是一个事件驱动库,可以理解为一个c语言的.h文件。memcached对于网络上的使用都是基于libevent的。比如说:memcached响应一个请求伪代码:key=libe... 阅读全文

posted @ 2015-05-22 18:00 Emmerich.Luang 阅读(303) 评论(0) 推荐(0)

memcached(一)--前言
摘要:memcached实在是一个常用软件,有N多的玩法。现整理一些有道云笔记的内容,发布到网上。希望对学生党、毕业没多久的朋友有帮助。 笔者大部分时间是基于java做开发的。公司的基础框架是基于play1.2.x二次开发,集成了spymemcached的框架。所以下面的内容会围绕着memcache... 阅读全文

posted @ 2015-05-22 17:43 Emmerich.Luang 阅读(156) 评论(0) 推荐(0)

导航