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 |
重写每个数据页尺寸。调整数据项最大尺寸。 |