memcached是一种基于键值对的内存数据库,一样平常应用于缓存数据,进步数据访问速率,减轻后端数据库压力。
安装
这里以Ubuntu为例,其他体系安装方法请看官方文档。
- sudo apt-get update
- sudo apt-get install memcached
复制代码 启动
查察资助
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毗连
按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)set设置
replace更换
- $replace id 1 0 4
- 2345
- STORED
复制代码 delete删除
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
复制代码 清空数据
查察运行状态
- $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)
复制代码 memcached-tool 导出数据
- $memcached-tool 127.0.0.1:11211 dump > /tmp/1.txt
- Dumping memcache contents
- Number of buckets: 1
- Number of items : 2
- Dumping bucket 1 - 2 total items
- $cat /tmp/1.txt // 导出的数据是带有时间戳的,这个时间戳就是该条数据的过期时间
- add name 0 1551489491 3 // 如果当前系统时间超过了时间戳,那么是导入不进去的
- Tom
- add age 0 1551489491 2
- 18
复制代码 相干链接
https://docs.memcached.org/
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |