|
memcached 是一个高效的分布式的内存对象缓存系统 ,他可以支持把各种数据(数组,对象,基本数据类型,资源除外)放入到它管理的内存中。它采用c/s结构,使用简单文本通讯并 基于libevent处理并发,将数据存入内存的缓存工具,它是基于 基于客户端的分布式,服务器端本身并不是分布式的。
Memcache(Memcached)是集群环境下的缓存解决方案。 它是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。它可以应对任意多个连接,使用非阻塞的网络IO。它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。
win32系统下的安装步骤:
①下载memcached软件
②解压 其中有一个memcached.exe文件
③安装memcached –d install [卸载使用 memcached -d uninstall]
④启动 memcached 服务
(1)直接通过界面启动该服务
(2)在控制台下启动 memcached –d start [命令一览表]
⑤查看memcached 服务是否启动成功! 默认端口11211 通过netstat -anb命令可以查看
memcached的基本命令(安装、卸载、启动、配置相关):
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
注意:win7下的通过控制台安装必须 启用管理员权限启动命令行窗口才可以运行命令。
使用方法一:
telnet的使用(win7下 默认情况telnet没有开启,需要在控制面板-->程序和功能,中通过打开或关闭功能,开题telnet即可开启telnet)
telnet://ip 11211即可对memcache进行远程操作。
使用方法二:
通过java客户端api的方式。
采用了spymemcached 下载地址:http://spymemcached.googlecode.com/ 它依赖 spy.jar,spy.jar的下载地址:http://bleu.west.spy.net/~dustin/repo/spy/jars/spy-2.4.jar
public class MemcacheTest {
public static void main(String[] args) {
MemcachedClient client=null;
try {
client = new MemcachedClient(new InetSocketAddress("localhost",11211));
} catch (IOException e) {
System.out.println(e.getMessage());
}
client.add("name", 60, "小明");
GetFuture<Object> name=client.asyncGet("name");
//这里是异步操作,如果出现了 服务器端超时,则可以抛出异常,否则会阻塞
try {
System.out.println(name.get(5, TimeUnit.SECONDS));
} catch (InterruptedException e) {
System.out.println(e.getMessage());
} catch (TimeoutException e) {
System.out.println(e.getMessage());
} catch (ExecutionException e) {
System.out.println(e.getMessage());
}
client.shutdown();
}
}
memcached的基本命令(当memcached 启动后用于对memcached管理的数据和本身运行状态相关的命令):
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
|
|
|
|