jgugugiug 发表于 2018-12-25 13:18:17

[缓存]关于memcached的详细介绍以及用法

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

  关于memcached的历史之类的,就不说了,不熟,也没怎么看过,主要就是说memcached的原理以及方式吧.笔记比较杂乱.
  memcached其实是类似于软件的一种,它是用来为其他软件或者服务提供一种高性能来存在的.memcache是一种高性能的分布式缓存服务器,一般是为了通过缓存数据库查询的结果,减少访问的次数来提高Web的访问速度的.

  php_memcached 是 php 为 Memcached 提供的 PECL 扩展。由于 Memcached 简单的协议规范,因此,当 Memcached推出后,就有了 PHP 的接口规范和相关扩展。
     memcached 使用了同样的“Key=>Value”方式组织数据,但是它和共享内存等其他等本地缓存有非常大 的区别。Memcached 是分布式的,也就是说它不是本地的。它基于网络连接(当然它也可以使用 localhost)方式完 成服务,本身它是一个独立于应用的程序或守护进程(Daemon 方式)。
  memcached 使用 libevent 库实现网络连接服务,理论上可以处理无限多的连接,但是它和 Apache 不同,它更 多的时候是面向稳定的持续连接的,所以它实际的并发能力是有限制的。在保守情况下 memcached 的最大同时连 接数为 200,这和 Linux 线程能力有关系,这个数值是可以调整的。
  下面说说memcache命令行简单的使用吧.

memcache启动参数
-pTCP端口号,默认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://s1.运维网.com/images/20181105/1541428648948120.jpg



页: [1]
查看完整版本: [缓存]关于memcached的详细介绍以及用法