Arch下安装Memcached
sudo pacman -S memcached
安装完之后,默认情况下是没有运行的,所以可以使用memcached -h
来查看帮助文档,之后运行下面这个命令来运行。
memcached -p 11211 -m 64m -d
监听端口11211,使用内存64M,-d
表示是以一个守护进程的形式后台运行。
运行了服务端的Memcached之后,使用telnet进行连接。使用如下命令。
telnet 127.0.0.1 11211
显示如下
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
另输入quit退出。
Memcached简单使用
set命令和get命令
set foo 0 900 9
memcached
STORED
get foo
VALUE foo 0 9
memcached
END
上面就是典型的set
和get
命令。其中使用set
命令的时候,参数功能如下所示:
- foo:表示key值,用于查找。
- 0 :可以用来存储除了键值对外的额外信息。
- 900:表示可以存放900秒,0表示永远。
- 9:表示字节数。
- memcached:表示value值,一直再第二行。
- STORED:表示存储成功。当存储失败的时候,显示ERROR。
同理可以猜测到使用get
命令的时候,参数的作用。
delete命令
delete foo
DELETE
删除一个存在的key。
state命令
state
Memcached stats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等。
Java客户端连接Memcached
下面的代码中我用的是下面这个Maven包。
<groupId>com.google.code.maven-play-plugin.spy</groupId>
<artifactId>memcached</artifactId>
<version>2.4.2</version>
下面是一个简单的例子,一看就懂如何简单地使用API了。
import net.spy.memcached.MemcachedClient;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
/**
* Created by jack on 16-8-1.
*/
public class TestMemcached {
public static void main(String[] args) throws IOException, ExecutionException, InterruptedException {
MemcachedClient memcachedClient = new MemcachedClient(new InetSocketAddress("127.0.0.1",11211));
System.out.println("连接成功!");
Future fo = memcachedClient.set("foo",900,"Free Education");
System.out.println("set status:" + fo.get());
System.out.println(memcachedClient.get("foo"));
memcachedClient.shutdown();
}
}
运行结果:
连接成功!
2016-08-01 21:58:03.220 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2016-08-01 21:58:03.251 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@22d8cfe0
set status:true
Free Education
2016-08-01 21:58:03.279 INFO net.spy.memcached.MemcachedClient: Shut down memcached client
运行了之后,发现除了打印的信息外,还有自己打印的提示信息,还是可以的。
后记
简单地对Memcached的安装,命令行的使用,Java客户端的使用有了一个了解,其实还有很多本质问题没有搞明白,比如为什么使用这个缓存就可以提升性能,有怎么样的历史和原理,比如如何在框架之下合理地使用缓存。下一篇讲。