很久没用过memcached,觉得有些生疏了,现在做一次笔记,回忆一下,也为了以后更加方便的理解.

   关于memcached的历史之类的,就不说了,不熟,也没怎么看过,主要就是说memcached的原理以及方式吧.笔记比较杂乱.

   memcached其实是类似于软件的一种,它是用来为其他软件或者服务提供一种高性能来存在的.memcache是一种高性能的分布式缓存服务器,一般是为了通过缓存数据库查询的结果,减少访问的次数来提高Web的访问速度的.

是 php 为 Memcached 提供的 PECL 扩展。由于 Memcached 简单的协议规范,因此,当 Memcached推出后,就有了 PHP 的接口规范和相关扩展。

    memcached 使用了同样的“Key=>Value”方式组织数据,但是它和共享内存等其他等本地缓存有非常大 的区别。Memcached 是分布式的,也就是说它不是本地的。它基于网络连接(当然它也可以使用 localhost)方式完 成服务,本身它是一个独立于应用的程序或守护进程(Daemon 方式)。

emcached 使用 libevent 库实现网络连接服务,理论上可以处理无限多的连接,但是它和 Apache 不同,它更 多的时候是面向稳定的持续连接的,所以它实际的并发能力是有限制的。在保守情况下 memcached 的最大同时连 接数为 200,这和 Linux 线程能力有关系,这个数值是可以调整的。

   下面说说memcache命令行简单的使用吧.

memcache启动参数
-p  TCP端口号,默认11211
-UUDP监听端口,默认11211,0时关闭
-l绑定地址,默认所有允许,如果设置了,
-d以daemon方式运行
-u绑定使用指定用户运行的进程
-m允许使用内存,单位M(默认64)
-P将PID写入文件

连接:
telnet 127.0.0.1 11211

命令:
set向内存中增加键值对,如果存在,则替换
add向内存中增加键值对
replace如果值不存在,返回NOT_STORED,否则替换值
get获取值
delete删除
flush_all清空所有缓存

stats解释:

STAT pid 22459                             进程ID
STAT uptime 1027046                        服务器运行秒数

STAT time 1273043062                       服务器当前unix时间戳

STAT version 1.4.4                         服务器版本

STAT pointer_size 64                       操作系统字大小(这台服务器是64位的)

STAT rusage_user 0.040000                  进程累计用户时间

STAT rusage_system 0.260000                进程累计系统时间

STAT curr_connections 10                   当前打开连接数

STAT total_connections 82                  曾打开的连接总数

STAT connection_structures 13              服务器分配的连接结构数

STAT cmd_get 54                            执行get命令总数

STAT cmd_set 34                            执行set命令总数

STAT cmd_flush 3                           指向flush_all命令总数

STAT get_hits 9                            get命中次数

STAT get_misses 45                         get未命中次数

STAT delete_misses 5                       delete未命中次数

STAT delete_hits 1                         delete命中次数

STAT incr_misses 0                         incr未命中次数

STAT incr_hits 0                           incr命中次数

STAT decr_misses 0                         decr未命中次数

STAT decr_hits 0                           decr命中次数

STAT cas_misses 0    cas未命中次数

STAT cas_hits 0                            cas命中次数

STAT cas_badval 0                          使用擦拭次数

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 15785                      读取字节总数

STAT bytes_written 15222                   写入字节总数

STAT limit_maxbytes 1048576                分配的内存数(字节)

STAT accepting_conns 1                     目前接受的链接数

STAT listen_disabled_num 0                

STAT threads 4                             线程数

STAT conn_yields 0

STAT bytes 0                               存储item字节数

STAT curr_items 0                          item个数

STAT total_items 34                        item总数

STAT evictions 0                           为获取空间删除item的总数

   很早之前想的一个问题,如果缓存还存在,但是数据已经更新,那么用户不就看不到最新的数据了么?后来一大神给我解决,memcache可以存一个临时的,不是永久的.或者不经常改动的数据,还有统计在线人数,或者单点登录SSO等.都可以用到memcache,那会儿很傻的以为保存整个数据库的数据.

   希望这些也可以给大家个思路吧.至于其他的,还没有接触过很多.暂时确实对memcache的深度应用不足.

http://blog.51cto.com/a3147972/1401401