memcached学习笔记

一、安装 -d install

 

二、启动 -d start

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server

ImagePath "D:\memcached.exe" -d runservice –p 11212 –m 128 –f 1.1

 

三、检查 stats slabs

telnet 192.168.1.8 11211

 

三、项目

string[] serverlist = { "192.168.1.8:11211", "192.168.1.9:11211" };
SockIOPool pool = SockIOPool.GetInstance();
pool.SetServers(serverlist);

pool.InitConnections = 3; //初始化连接数
pool.MinConnections = 3;//最少连接数
pool.MaxConnections = 5;//最大连接数

pool.SocketConnectTimeout = 1000;//Socket连接超时时间
pool.SocketTimeout = 3000;// Socket超时时间

pool.MaintenanceSleep = 30;//维护线程休息时间
pool.Failover = true;//失效转移(一种备份操作模式)

pool.Nagle = false;//是否用nagle算法启动socket
pool.Initialize();

MemcachedClient mc = new MemcachedClient();
mc.EnableCompression = false;
mc.Set("foo", true);//
mc.Set("foo", false, DateTime.Now.AddSeconds(3600));//改2小时后失效
bool b = (bool)mc.Get("foo");//
if(mc.KeyExists("foo"))//验证是否存在
    mc.Delete("foo"); //

 

四、剖析 《memcached全面剖析》

数据存储方式:Slab Allocation

数据过期方式:Lazy Expiration + LRU

 

企业展示设计

 

 

  

Memcached全面剖析:

http://tech.idv2.com/2008/08/17/memcached-pdf

Memcached 1.2内存模型分析:

http://phpcup.cn/viewthread.php?tid=45

Memcached深度分析:

http://funjackyone.javaeye.com/blog/128384

memcached server LRU深入分析:

http://www.javaeye.com/topic/225692

Memcache使用详解: http://blog.csdn.net/heiyeshuwu/archive/2006/11/13/1380838.aspx

 

 

五、其他缓存技术

Velocity Redis

 

 

memcached启动参数

 

-p

指定端口号(默认11211)

-U <num>

UDP监听端口 (默认: 11211, 0 时关闭) 

-s <file>

用于监听的UNIX套接字路径(禁用网络支持)

-a <mask> 

UNIX套接字访问掩码,八进制数字(默认:0700)

-m

指定最大使用内存大小(默认64MB)

-t

线程数(默认4)

-l <ip_addr>

绑定地址 (默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) 

-d start

启动memcached服务

-d restart

重起memcached服务

-d stop|shutdown

关闭正在运行的memcached服务

-u <username>

绑定使用指定用于运行进程 <username>  (只有root用户可以使用这个参数)

-P <file>

将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与 -d 一起使用

-m 最大内存使用,单位MB。默认64MB

-M

内存耗尽时返回错误,而不是删除项

-c

最大同时连接数,默认是1024

-f

块大小增长因子,默认是1.25

-n <bytes>

最小分配空间,key+value+flags默认是48

-k

锁定所有内存页。注意你可以锁定的内存上限。试图分配更多内存会失败的,所以留意启动守护进程时所用的用户可分配的内存上限。

(不是前面的 -u <username> 参数;在sh下,使用命令"ulimit -S -l NUM_KB"来设置。)

-v

提示信息(在事件循环中打印错误/警告信息。)

-vv

详细信息(还打印客户端命令/响应)

-vvv

超详细信息(还打印内部状态的变化)

-h

打印这个帮助信息并退出。

-i

打印memcached和libevent的许可。

-L

尝试使用大内存页(如果可用的话)。提高内存页尺寸可以减少"页表缓冲(TLB)"丢失次数,提高运行效率。

-D <char>

为了从操作系统获得大内存页,memcached会把全部数据项分配到一个大区块。使用 <char> 作为前缀和ID的分隔符。这个用于按前缀获得状态报告。默认是":"(冒号)。如果指定了这个参数,则状态收集会自动开启;如果没指定,则需要用命令"stats detail on"来开启。

-t <num>

使用的线程数(默认:4)

-R

每个连接可处理的最大请求数。

-C

禁用CAS。

-b

设置后台日志队列的长度(默认:1024)

-B

绑定协议 - 可能值:ascii,binary,auto(默认)

-I

重写每个数据页尺寸。调整数据项最大尺寸。

posted @ 2012-12-20 12:07  神在卖炉子  阅读(249)  评论(0编辑  收藏  举报