Introduce
Memcached作为一个高并发内存Cached系统被很多大公司使用,最近也一直在用Memcached做项目也积累了一些相关经验。
本篇博文主要记录Memcached的一些基本使用和简单的Monitor
Install
Memcached的安装很简单,在Ubuntu下面一行命令搞定。
1 |
sudo apt-get install memcached
|
Start
实际使用的时候,memcached需要调整内存大小和端口号等命令,则启动的使用时用以下的Command就行。
1 |
/usr/local/bin/memcached -p 11211 -m 64m -d |
- -p 指定端口号
- -m 指定内存大小
- -d 作为daemon在后台启动
- 如果想trouble shotting 则加 -vv
Test
Test也很简单,安装官网的命令就行
1 |
telnet localhost 11211 |
里面就能Get和Set了。
Use in Java
由于项目是java的,所以以java为例子来介绍Java下Memcached的使用。
Java下Memcached的客户端很多,这里介绍spymemcached
spymemcached的使用很简单,在maven项目下面,我们加入如下依赖。
1 2 3 4 5 |
<dependency> <groupId>net.spy</groupId> <artifactId>spymemcached</artifactId> <version>2.9.1</version> </dependency> |
这样我们就能对Memcached操作了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public class Memcached { private static MemcachedClient MEMCACHED_CLIENT; static { try { MEMCACHED_CLIENT = new MemcachedClient( AddrUtil.getAddresses("localhost1:11211 localhost2:11211")); } catch (Exception e) { System.err.println("Cannot init MEMCACHED Memcached Client"); } } public static void set(String key, String value,Integer expireTime ) throws Exception { MEMCACHED_CLIENT.set(key, expireTime, value); } public static String get(String key) throws Exception { Object value = MEMCACHED_CLIENT.get(key); if (null != value) return value.toString(); return null; } } |
Monitor
我们可以通过以下简单的命令得知Memcached的运行状况,以此为扩充可以实现简单的Memcached检测shell。
1 |
watch "echo stats | nc 127.0.0.1 11211" |
Conclusion
Memcached实际使用下来简单易用,各个平台上面也有相应的Client.
但有时高并发可能会出现Timeout的情况,导致缓冲没办法命中的情况,具体原因还需要进一步调查。
Memcahed的作者最近用Go语言去写了groupcache很值得关注。