memcache
Memcache=memory+cache----->内存作为缓存--->高性能分布式的对象缓存系统--->通过维护内存中一个巨大的hash表来实现数据缓存
Memcache-->soft-->C/S架构软件--->100K左右
作用---->缓存数据(不是文件)写入内存 节省I/O开销
Why use Memcache?
1.内存的读写速度要高于硬盘
2.在服务器中 apache 消耗cpu 数据占用硬盘 大量多余的内存没有使用 可以为Memcache 提供内存使用 有效利用服务器资源
Study
Apache的进程 httpd
Mysql 的进程 mysqld
Memchace 的进程 memcached
Memcache 守护进程方式 运行服务器中 监听服务器端口11211(默认)
可以连接memcache 的客户端 php------telnet------java------c#...
Telnet客户端用于练习(原始命令)
php客户端 用于实战
安装和卸载
C:\Documents and Settings\Administrator>D:\Memcache\memcached.exe -d install
C:\Documents and Settings\Administrator>D:\Memcache\memcached.exe -d start
C:\Documents and Settings\Administrator>D:\Memcache\memcached.exe -d stop
C:\Documents and Settings\Administrator>D:\Memcache\memcached.exe -d uninstall
XP系统 报错 缺失msvcr71.dll
Win7/8 安装不了
1.不是管理员身份 --->右键 以管理员身份运行
2.兼容性---->选择window xp
3.使用64位
Telnet 连接操作memcache
Telnet ip 地址 端口号
C:\Documents and Settings\Administrator>telnet localhost 11211
Command | Description | Example |
get | 获取值 | get mykey |
set | 设置值(可以存在可以不存在) | set mykey 0 60 5 |
add | 添加新值 | add newkey 0 60 5 |
replace | 替换值(必须已存在) | replace key 0 60 5 |
append | 在原有值之后添加数据 | append key 0 60 15 |
prepend | 在原有值之前添加数据 | 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 | 删除一条数据 | delete mykey |
flush_all | 清除所有数据 | flush_all |
清除900秒之内的数据 | flush_all 900 | |
stats | 查看所有状态 | stats |
Prints memory statistics | stats slabs | |
Prints memory statistics | stats malloc | |
Print higher level allocation statistics | stats items | |
| stats detail | |
已使用大小 | stats sizes | |
获取当前的存储数据键列表 | Stats cachedump 1 0 | |
重置状态 | stats reset | |
version | 查看版本 | version |
verbosity | Increases log level | verbosity |
quit | 退出telnet连接 | quit |
Stats详解
pid | memcache服务器的进程ID |
uptime | 服务器已经运行的秒数 |
time | 服务器当前的unix时间戳 |
version | memcache版本 |
pointer_size | 当前操作系统的指针大小(32位系统一般是32bit) |
rusage_user | 进程的累计用户时间 |
rusage_system | 进程的累计系统时间 |
curr_items | 服务器当前存储的items数量 |
total_items | 从服务器启动以后存储的items总数量 |
bytes | 当前服务器存储items占用的字节数 |
curr_connections | 当前打开着的连接数 |
total_connections | 从服务器启动以后曾经打开过的连接数 |
connection_structures | 服务器分配的连接构造数 |
cmd_get | get命令(获取)总请求次数 |
cmd_set | set命令(保存)总请求次数 |
get_hits | 总命中次数 |
get_misses | 总未命中次数 |
evictions | 为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items) |
bytes_read | 总读取字节数(请求字节数) |
bytes_written | 总发送字节数(结果字节数) |
limit_maxbytes | 分配给memcache的内存大小(字节) |
threads | 当前线程数 |
读写操作
添加 add 键名 标志位 生存时间 数据长度 回车输入数据
add key 0 0 3
kkk
STORED
读取 get 键名
get key
VALUE key 0 3
kkk
END
替换 replace 键名 标志位 生存时间 数据长度 回车输入数据(必须数据已存在)
replace key 0 10 3
key
STORED
替换或者添加(数据存在就替换 不存在就添加)
set 键名 标志位 生存时间 数据长度 回车输入数据
set key 0 0 4 (替换)
test
STORED
get key
VALUE key 0 4
test
END
set key1 0 0 3 (添加)
key
STORED
删除(单条数据)
delete 键名
delete key1
DELETED
get key1
END
查询所有
Stats cachedump 1 0
stats cachedump 1 0
ITEM key [4 b; 1405651153 s]
ITEM sex [10 b; 1405651153 s]
ITEM aaa [3 b; 1405651153 s]
END
Stats cachedump 1 2(从第一个到第二个)
stats cachedump 1 2
ITEM key [4 b; 1405651153 s]
ITEM sex [10 b; 1405651153 s]
END
添加(前)
Prepend 键名 标志位 生存时间 数据长度 回车输入数据
prepend key 0 0 3
key
STORED
get key
VALUE key 0 11
keytesttest
END
添加(后)
Append 键名 标志位 生存时间 数据长度 回车输入数据
append key 0 0 3
key
STORED
get key
VALUE key 0 14
keytesttestkey
END
版本
Version
version
VERSION 1.2.6
删除(全部数据)
flush_all
flush_all
OK
安全性问题 --->无密码访问
1.免费--->建立iptables防火墙(在防火墙中设置仅允许访问memcache端口的ip地址)
2.花费--->为每台服务器搭载独立的网卡(建立独立的局域网)