memcached的基本使用
memcached是一种基于键值对的内存数据库,一般应用于缓存数据,提高数据访问速度,减轻后端数据库压力。
安装
这里以Ubuntu为例,其他系统安装方法请看官方文档。
sudo apt-get update
sudo apt-get install memcached
启动
memcached -d
查看帮助
memcached -h
netcat(nc)网络请求
查看配置
$ echo "stats settings" | nc localhost 11211
STAT maxbytes 67108864
STAT maxconns 1024
STAT tcpport 11211
...
查看值
$ echo "get runoob" | nc localhost 11211
VALUE runoob 0 5
value
END
telnet连接
telnet 127.0.0.1 11211
按Ctrl + ]
组合键退出。
在telnet>
命令行里,输入quit
。
查看所有slab
$stats items
STAT items:1:number 2
这里items有2个,编号是1。
查看编号为1的slab的所有key:
$stats cachedump 1 0
ITEM runoob [5 b; 0 s]
ITEM peter [11 b; 0 s]
这里cachedump读取slab_id为1的slab,0表示数量不限制,类似sql的limit。
add新增
参数说明:
<command name> | set/add/replace |
---|---|
<key> | 查找关键字 |
<flags> | 客户机使用它存储关于键值对的额外信息 |
<exptime> | 该数据的存活时间,0表示永远 |
<bytes> | 存储字节数 |
<data block> | 存储的数据块(可直接理解为key-value结构中的value) |
$add id 1 0 4
1234
STORED
set设置
$set id 1 0 4
5678
STORED
replace替换
$replace id 1 0 4
2345
STORED
delete删除
$delete id
DELETED
get查看value
$add id 1 0 4
aaaa
STORED
$get id
VALUE id 1 4
aaaa
END
这里id是key,aaaa
是值,1表示flag标记,4表示数据长度。
gets
gets id
VALUE id 1 4 14
aaaa
END
gets比get多一个参数,用来检查数据是否发生变化。
cas
cas即checked and set
的意思,只有当最后一个参数和gets所获取的参数匹配时才能存储,否则返回“EXISTS”。
$add id 100 0 5
abcde
STORED
$gets id
VALUE id 100 5 17
abcde
END
$cas id 100 0 5 17
bbbbb
STORED
$gets id
VALUE id 100 5 18
bbbbb
END
append 后面追加
get id
VALUE id 100 5
bbbbb
END
append id 100 0 5
ccccc
STORED
get id
VALUE id 100 10
bbbbbccccc
END
prepend 前面追加
get id
VALUE id 100 10
bbbbbccccc
END
prepend id 100 0 10
dddddddddd
STORED
get id
VALUE id 100 20
ddddddddddbbbbbccccc
END
清空数据
$flush_all
OK
get id
END
查看运行状态
$stats
STAT pid 2711 //进程id
STAT uptime 2453 //总的运行时间,单位描述
STAT time 1344856333 //当前时间
STAT version 1.5.22 //版本
STAT pointer_size 32 //服务器指针位数,一般32位操作系统是32
STAT rusage_user 0.002999 //进程的累计用户时间
STAT rusage_system 1.277805 //进程的累计系统事件
STAT curr_connections 1 //当前连接数
STAT total_connections 11 //服务器启动后,总连接数
STAT connection_structures 11 //连接结构的数量
STAT cmd_get 17 //总获取次数
STAT cmd_set 1 //总写入次数
STAT cmd_flush 1 //总的的清空次数
STAT get_hits 1 //总的命中次数
STAT get_misses 7 //获取没有命中次数
STAT delete_misses //删除没有命中次数
STAT delete_hits 4 //删除命中次数
STAT incr_misses //递增操作没有命中次数
STAT incr_hits //递增操作命中次数
STAT decr_misses //递减操作没有命中的次数
STAT decr_hits //递减操作命中的次数
STAT cas_misses //cas设置没有命中次数
STAT cas_hits //cas命中次数
STAT cas_badval //cas操作找到key,但版本过期,没有设置成功
STAT bytes_read 455 //总共获取数据量
STAT bytes_written 1175 //总共写入数据量
STAT limit_maxbytes 1048576 //最大允许使用内存,单位字节
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 5 //当前线程数
STAT conn_yields 0
STAT bytes 56 //已用缓存空间
STAT curr_items 1 //当前缓存的keyvalue数
STAT total_items 7 //总共缓存的keyvalue数,包括过期删除的
STAT evictions //通过删除keyvalue,释放内存次数
END
查看STAT slabs信息
$stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 4
STAT 1:free_chunks 10918
STAT 1:free_chunks_end 0
STAT 1:get_hits 25
STAT 1:cmd_set 30
STAT 1:delete_hits 4
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 3
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048576
END
Python读写memcache
from pymemcache.client import base
client = base.Client(server='127.0.0.1')
client.set('runoob', 'value')
value = client.get('runoob')
print(value)
相关链接
https://docs.memcached.org/