[root@localhost ~]# memcached -d -m 512 -u root -p 12266 -c 256
参数名称及意义:linux
-d 以守护进程方式启动。若是该参数没有指定,当按ctrl+c命令结束,memcache自动关闭web
-m 分配给memcache使用的最大内存数 单位是m,默认是64m数据库
-u 指定运行memcache的用户json
-l: 指定监听的ip地址缓存
-p 指定监听的tcp端口号,能够经过-u指定udp端口.默认是11211服务器
-c 最大并发链接数数据结构
-P 报错进程id的文件并发
linux下通常使用telnet链接memcache服务,以下:tcp
[root@localhost ~]# telnet 127.0.0.1 11266
添加修改key-value,命令格式:memcached
<command> <key> <flags> <exptime> <bytes>\r\n
参数名称及意义:
command add, set或 replace
key 缓存的名字
flag 16位无符号整数,和key要存储的数据一块儿存储,并在程序get缓存时,返回。
exptime 过时时间,0 表示永远不过时,若是非零,表示unix时间或距此秒数
bytes 存储数据的字节数
\r\n 表示换行回车
【补充】
key:学过计算机基础和学过计算机数据库结构的人都知道,计算机有个比较经常使用的结构叫hash,这是数据结构中最重要的数据结构。key和value就是经过hash,hash有一个本身独造的函数,经过key计算某个固定的值,将value存到这个key计算的固定的值里面,当咱们经过get取得时候,经过key咱们就能够很快的在内存中找到咱们当时存的key所对应的value的值,因此速度很是快;
flag:memcache 基于简单的文本协议,传输的东西,理解成字符串来存储,有经验的同窗会将array() object() 转成json_encode()这个字符串,存到 memcached里边。那怎么来区分当时是存的是字符串仍是array()或object()呢?这就是flag的意义。
例子:
add title 1 0 16
welcome to maizi
Stored
expire:设置缓存的有效期。它有三种方式:
1)设置它的秒数,从当前的时间算起,到第n秒失效。好比失效时间是10秒,就是从当前的时间算,过来10秒你再去get这个web的时候,它是没有的。
2)使用时间戳的方式,就是指定明天某个时候失效,这个场景主要运用于抢购,如抢购手机,但愿明天的这个时候缓存失效,能够从相关网站得到时间戳信息以下。
3)将expire设置为0,设置为0后就不自动失效,有的人觉得这个是一个永久数据,这种理解是错误的。这里说一种极端的方式,好比memcache挂了,再重启memcache服务,但这里面的数据就都不会存在 了。咱们在编译memcache的时候,使用了一个最长的常量,默认时间为30天,因此即便你设置为0,30天之后,它的数据也会失效。还有一种状况是可能我等不到这30天,就会被新的数据挤出去,这个就 是老数据被踢的这个现象。
命令结果:
STORED #表示成功
NOT_STORED #表示失败
CLIENT_ERROR bad data chunk #输入数据有误
add kk 1 0 4 #回车
1234 #回车
STORED
若是key已经存在,则会添加失败。若是数据 不是4个字节 应该会提示数据错误。
replace kk 1 0 2 #回车
11 #回车
STORED
key存在时,成功;不存在时,失败。
set kk 1 0 4 #回车
1234 #回车
STORED
key不存在时,添加【add】;已存在时,替换【replace】。
get kk
VALUE kk 1 4
1234
多个key时,用空格隔开。
delete kk #回车
DELETED
flush_all
OK
stats
version #显示版本号
stats reset #清空统计数据
stats slabs #显示各个slab的信息,包括chunk的大小、数目、使用状况等
stats items #显示各个slab中item的数目和存储时长(最后一次访问距离如今的秒数)
ctrl+]
tlenet>quit