Memcached 是一个自由开源的,高性能,分布式内存对象缓存系统。

Memcached 是一种基于内存的 key-value 存储,用来存储小块的任意数据(字符串、对象)。

Memcached 官方网站:http://memcached.org/

Linux常见安装工具命令

1
2
3
4
5
6
# 安装telnet工具包
apk add busybox-extras
telnet 127.0.0.1 11211

# 安装vim
apk add vim

常用命令

telnet memcached 11211 // 连接 memcached 服务器

  • quit // 退出终端

  • flush_all // 清除全部缓存

  • get key_name // 获取某个 key 的缓存

  • gets key_name // gets 命令的功能类似于基本的 get 命令。两个命令之间的差异在于,gets 返回的信息稍微多一些

  • delete key // 清除某个key的缓存

  • set key flags exptime bytes [noreply] // set 命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。

    • key:键值 key-value 结构中的 key,用于查找缓存值
    • flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息,一般设置为 0
    • exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
    • bytes:在缓存中存储的字节数,最大 1M
    • noreply(可选): 该参数告知服务器不需要返回数据
  • add key flags exptime bytes [noreply] // 仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。

  • replace key flags exptime bytes [noreply] // 仅当键已经存在时,replace 命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应。

  • append key flags exptime bytes [noreply] // 用于向已存在 key(键) 的 value(数据值) 后面追加数据 。

  • prepend key flags exptime bytes [noreply] // 用于向已存在 key(键) 的 value(数据值) 前面追加数据 。

注意

  • memcache 有效期默认最大 30 天,如设置过期时间大于 30 天,值会设置失败
  • memcached 单个 key 支持最大的存储对象为1M。这个值由其内存分配机制决定的。『所以Memcahce不适合缓存大数据,超过1MB的数据,可以考虑压缩或拆分到多个key中。』
  • memcached 在存储数组时,PHP 的 memcached 的驱动会自动进行 serialize 和 unserialize

memcache vs memcached

其实很简单,memcache是php的一个扩展,用于php管理memcached(服务端),php-memcache.dll。