memcache和memcached区别
2024-10-20 16:02:38
Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash表,Memcached自管理这些Hash表。
Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可供最流行的语言。
Memcache官方网站:http://memcached.org/
Memcached又是什么?
Memcache是该系统的项目名称,Memcached是该系统的主程序文件(字母d可以理解为daemon),以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据。
memcache运行状态查看:
telnet ip 端口
或者
echo stats |nc ip 端口
下面是一些主要用到的命令,具体详细情况请查阅官方文档 doc/protocol.txt。
Command | Description | Example |
---|---|---|
get | Reads a value | get mykey |
set | Set a key unconditionally | set mykey 0 60 5 |
add | Add a new key | add newkey 0 60 5 |
replace | Overwrite existing key | replace key 0 60 5 |
append | Append data to existing key | append key 0 60 15 |
prepend | Prepend data to existing key | prepend key 0 60 15 |
incr | Increments numerical key value by given number | incr mykey 2 |
decr | Decrements numerical key value by given number | decr mykey 5 |
delete | Deletes an existing key | delete mykey |
flush_all | Invalidate specific items immediately | flush_all |
Invalidate all items in n seconds | flush_all 900 | |
stats | Prints general statistics | stats |
Prints memory statistics | stats slabs | |
Prints memory statistics | stats malloc | |
Print higher level allocation statistics | stats items | |
stats detail | ||
stats sizes | ||
Resets statistics | stats reset | |
version | Prints server version. | version |
verbosity | Increases log level | verbosity |
quit | Terminate telnet session | quit |
查看Statistics
通过下面命令查看 statistics 信息:
stats
你会获得一个服务状态的详细列表信息,具体情况如下:
参数 | 值 | 描述 |
---|---|---|
pid | 7862 | memcache服务器进程ID |
uptime | 12617972 | 服务器已运行秒数 |
time | 1320756409 | 服务器当前Unix时间戳 |
version | 1.4.5 | memcache版本 |
pointer_size | 64 | 操作系统指针大小 |
rusage_user | 1.731736 | 进程累计用户时间 |
rusage_system | 251.421778 | 进程累计系统时间 |
curr_connections | 41 | 当前连接数量 |
total_connections | 848 | Memcached运行以来连接总数 |
connection_structures | 46 | Memcached分配的连接结构数量 |
cmd_get | 164377 | get命令请求次数 |
cmd_set | 58617 | set命令请求次数 |
cmd_flush | 0 | flush命令请求次数 |
get_hits | 105598 | get命令命中次数 |
get_misses | 58779 | get命令未命中次数 |
delete_misses | 0 | delete命令未命中次数 |
delete_hits | 0 | delete命令命中次数 |
incr_misses | 0 | incr命令未命中次数 |
incr_hits | 0 | incr命令命中次数 |
decr_misses | 0 | decr命令未命中次数 |
decr_hits | 0 | decr命令命中次数 |
cas_misses | 0 | cas命令未命中次数 |
cas_hits | 0 | cas命令命中次数 |
cas_badval | 0 | 使用擦拭次数 |
auth_cmds | 0 | 认证命令处理的次数 |
auth_errors | 0 | 认证失败数目 |
bytes_read | 262113283 | 读取总字节数 |
bytes_written | 460023263 | 发送总字节数 |
limit_maxbytes | 536870912 | 分配的内存总大小(字节) |
accepting_conns | 1 | 服务器是否达到过最大连接(0/1) |
listen_disabled_num | 0 | 失效的监听数 |
threads | 4 | 当前线程数 |
conn_yields | 0 | 连接操作主动放弃数目 |
bytes | 1941693 | 当前存储占用的字节数 |
curr_items | 476 | 当前存储的数据总数 |
total_items | 58617 | 启动以来存储的数据总数 |
evictions | 0 | LRU释放的对象数目 |
reclaimed | 48830 | 已过期的数据条目来存储新数据的数目 |
如果你不确定你是否有足够的内存,你可以通过查看“evictions”的值来确定Memcache实例的内存使用情况,如果还有足够的内存,那么“evictions”的值应该为0或者不在增长。
查看 Memory Statistics
你可以通过下面命令查看当前 memory statistics :
stats slabs
Example:
STAT 1:chunk_size 80
STAT 1:chunks_per_page 13107
STAT 1:total_pages 1
STAT 1:total_chunks 13107
STAT 1:used_chunks 13106
STAT 1:free_chunks 1
STAT 1:free_chunks_end 12886
STAT 2:chunk_size 100
STAT 2:chunks_per_page 10485
STAT 2:total_pages 1
STAT 2:total_chunks 10485
STAT 2:used_chunks 10484
STAT 2:free_chunks 1
STAT 2:free_chunks_end 10477
[...]
STAT active_slabs 3
STAT total_malloced 3145436
END
查看各个Slab中Item的数目和年龄(最后一次访问距现在的秒数)
stats items
结果:
stats items
STAT items:1:number 220
STAT items:1:age 83095
STAT items:2:number 7
STAT items:2:age 1405
[...]
END
清空统计数据
stats resets
显示内存分配数据
stats malloc
设置或显示详细操作记录
stats detail [on|off|dump]
清空所有键值
flush_all
退出
quit
最大有效期为 30 !
不要设置过期时间超过30天,如果超过30天,Memcache会把它当做一个 Unix timestamp。
设置最大有效期(2592000ms)例子:
set my_key 0 2592000 1
1
最新文章
- oracle sql 执行计划分析
- MFC编程 | tab control控件的使用
- SQL select 语法(转)
- jdbc与 Beanshell PostProcessor 对多条结果的处理
- display:none与visibility: hidden的区别
- ORA-00205
- python生态环境
- Vijos 1132 求二叉树的先序序列
- webbench
- postgresql9.4新特性jsonb学习-update更新操作
- 【LeetCode】 Populating Next Right Pointers in Each Node 全然二叉树
- 使用Xcode和Instruments调试解决iOS内存泄漏
- javaScript 比较数字大小
- spring-mvc List及数组的配置接收
- HTML5 Geolocation API工作原理[转载]
- scrapy.Spider的属性和方法
- rpm打包要点
- linux常见故障处理
- php tp3.2生成二维码
- VMware 中安装KVM,模块不加载