美文网首页程序员
Memcached常用入门

Memcached常用入门

作者: sknfie | 来源:发表于2019-08-06 18:31 被阅读4次

1.概述

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

Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。

Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。

本质上,它是一个简洁的key-value存储系统。

一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

2.特征

memcached作为高速运行的分布式缓存服务器,具有以下的特点:

协议简单

基于libevent的事件处理

内置内存存储方式

memcached不互相通信的分布式

3.Linux Memcached安装

Linux系统安装memcached,首先要先安装libevent库:

yum install libevent libevent-devel

安装 Memcached:

yum install memcached

运行 Memcached:(bin -> usr/bin)

/usr/bin/memcached -h

/bin/memcached -h

启动选项:

-d是启动一个守护进程;

-m是分配给Memcache使用的内存数量,单位是MB;

-u是运行Memcache的用户;

-l是监听的服务器IP地址,可以有多个地址;

-p是设置Memcache监听的端口,最好是1024以上的端口;

-c是最大运行的并发连接数,默认是1024;

-P是设置保存Memcache的pid文件。

(1)作为前台程序运行:

/bin/memcached -p 11211 -m 64m -vv -u root

(2)作为后台服务程序运行:

/bin/memcached -p 11211 -m 64m -u root -d

/bin/memcached  -d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid

4.Memcached set命令

Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中。

如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。

语法:

set key flags exptime bytes [noreply]

value

参数说明如下:

key:键值 key-value 结构中的 key,用于查找缓存值。

flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。

exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)

bytes:在缓存中存储的字节数

noreply(可选): 该参数告知服务器不需要返回数据

value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)

例如:

set foo 0 900 9

memcached

get foo

5.Memcached add 命令

Memcached add 命令用于将 value(数据值) 存储在指定的 key(键) 中。

如果 add 的 key 已经存在,则不会更新数据(过期的 key 会更新),之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。

语法:

add key flags exptime bytes [noreply]

value

例如:

add new_key 0 900 10

data_value

6.Memcached replace 命令

Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值)。

如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED。

语法:

replace key flags exptime bytes [noreply]

value

例如:

add mykey 0 900 10

data_value

get mykey

replace mykey 0 900 16

some_other_value

7.Memcached append 命令

Memcached append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 。

语法:

append key flags exptime bytes [noreply]

value

8.Memcached prepend 命令

Memcached prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据 。

用法:

prepend key flags exptime bytes [noreply]

value

例如:

set foo 0 900 9

memcached

STORED

get foo

VALUE foo 0 9

memcached

END

prepend foo 0 900 5

redis

STORED

get foo

VALUE foo 0 14

redismemcached

END

9.Memcached get 命令

Memcached get 命令获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。

语法:

get key

多个 key 使用空格隔开,如下:

get key1 key2 key3

10.Memcached delete 命令

Memcached delete 命令用于删除已存在的 key(键)。

语法:

delete key [noreply]

11.Memcached incr 与 decr 命令

Memcached incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作。

incr 与 decr 命令操作的数据必须是十进制的32位无符号整数。

如果 key 不存在返回 NOT_FOUND,如果键的值不为数字,则返回 CLIENT_ERROR,其他错误返回 ERROR。

incr 命令语法:

incr key increment_value

例如:

set no 0 900 2

10

incr no 5

decr 命令语法:

decr key decrement_value

例如:

decr no 5

5

12.Memcached stats 命令

Memcached stats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等。

stats

STAT pid 81160  //memcache服务器进程ID

STAT uptime 18639  //服务器已运行秒数

STAT time 1565081958  //服务器当前Unix时间戳

STAT version 1.4.15  //memcache版本

STAT libevent 2.0.21-stable //libevent版本

STAT pointer_size 64  //操作系统指针大小

STAT rusage_user 0.439147 //进程累计用户时间

STAT rusage_system 0.243970  //进程累计系统时间

STAT curr_connections 5  //当前连接数量

STAT total_connections 10  //Memcached运行以来连接总数

STAT connection_structures 7  //Memcached分配的连接结构数量

STAT reserved_fds 20  //内部使用的FD数

STAT cmd_get 42  //get命令请求次数

STAT cmd_set 24  //set命令请求次数

STAT cmd_flush 0 //flush命令请求次数

STAT cmd_touch 0 //touch命令请求总数

STAT get_hits 33 //get命令命中次数

STAT get_misses 9//get命令未命中次数

STAT delete_misses 1 //delete命令未命中次数

STAT delete_hits 2  //delete命令命中次数

STAT incr_misses 0  //incr命令未命中次数

STAT incr_hits 1    //incr命令命中次数

STAT decr_misses 0  //decr命令未命中次数

STAT decr_hits 3    //decr命令命中次数

STAT cas_misses 0    //cas命令未命中次数

STAT cas_hits 0      //cas命令命中次数

STAT cas_badval 1    //使用擦拭次数

STAT touch_hits 0    //touch命中次数

STAT touch_misses 0  //touch未命中次数

STAT auth_cmds 0    //认证命令处理的次数

STAT auth_errors 0  //认证失败数目

STAT bytes_read 1554 //读取总字节数

STAT bytes_written 3902  //发送总字节数

STAT limit_maxbytes 1073741824  //分配的内存总大小(字节)

STAT accepting_conns 1  //服务器是否达到过最大连接(0/1)

STAT listen_disabled_num 0  //失效的监听数

STAT threads 4 //当前线程数

STAT conn_yields 0 //连接操作主动放弃数目

STAT hash_power_level 16  //hash表等级

STAT hash_bytes 524288    //当前hash表大小

STAT hash_is_expanding 0  //hash表正在扩展

STAT bytes 74      //当前存储占用的字节数

STAT curr_items 1  //当前存储的数据总数

STAT total_items 21 //启动以来存储的数据总数

STAT expired_unfetched 0  //已过期但未获取大对象数目

STAT evicted_unfetched 0  //已驱逐但未获取大对象数目

STAT evictions 0    //LRU释放的对象数目

STAT reclaimed 4    //已过期的数据条目来存储新数据的数目

END

13.Memcached stats items 命令

Memcached stats items 命令用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。

stats items

STAT items:1:number 1  //该slab中对象数(不包含过期对象)

STAT items:1:age 884  //LRU队列中最老对象的过期时间

STAT items:1:evicted 0 //LRU释放对象数

STAT items:1:evicted_nonzero 0  //设置了非0时间的LRU释放对象数

STAT items:1:evicted_time 0 //最后一次LRU释放的对象存在时间

STAT items:1:outofmemory 0 //不能存储对象次数

STAT items:1:tailrepairs 0 //修复slabs次数

STAT items:1:reclaimed 4 //使用过期对象空间存储对象次数

STAT items:1:expired_unfetched 0//已过期但未获取的对象数目

STAT items:1:evicted_unfetched 0//已驱逐但未获取的对象数目

END

相关文章

网友评论

    本文标题:Memcached常用入门

    本文链接:https://www.haomeiwen.com/subject/hwnwdctx.html