天天看点

Memcache入门

说来惭愧,第一次听说Memcache是在大约在6个月前。作为一个搞J2EE开发的,工作一年多了,都没听说过Memcache实在是惭愧。

当时是换了新工作,第一个任务是开发一个报表系统供公司内部使用。为了使系统能7*24小时提供服务,老大说搞两台服务器吧,然后弄个Memcache。后来换了个方式,一台服务器作为“主”服务器,正常情况下用户均访问这台机器,当访问不了的时候自动跳转到另一台机子,实在服务器上做了一次跳转。然后就没有去看Memcache。下午有空就学习了一下,以下是自己的学习纪录。

Memcache是一种高性能分布式内存缓存服务器。

memcached is a high-performance, distributed memory object caching system, generic in nature, but originally intended for use in speeding up dynamic web applications by alleviating database load.

安装Libevent:

Memcache使用Libevent操作网络IO,所以先安装Libevent http://libevent.org/

$wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz

$tar -zxvf libevent-2.0.21-stable.tar.gz

$cd libevent-2.0.21-stable

$autoconf

$./configure --prefix=/usr/local

$make

$sudo make install

安装Memcache:

$wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz

$tar -zxvf memcached-1.4.15

$cd memcached-1.4.15

启动Memcache:

启动Memcache守护进程,使用64M内存,11211端口

$memcached -d -m 64 127.0.0.1 -p 11211

测试:

通过telnet server port使用刚才启动的服务

Memcache入门
上面使用了set\get\quit命令,下面是一些常用命令

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
Invalidate all items in n seconds flush_all 900
stats Prints general statistics
Prints memory statistics stats slabs
stats malloc
Print higher level allocation statistics stats items
stats detail
stats sizes
Resets statistics stats reset
version Prints server version.
verbosity Increases log level
quit Terminate telnet session

 在Java中使用:

在Java中使用Memcache需要一个客户端,本文使用的是xMemcache。

"XMemcached是一个新java memcached client。也许你还不知道memcached是什么?可以先看看

这里

。简单来说,Memcached 是一个高性能的分布式内存对象的key-value缓存系统,用于动态Web应用以减轻数据库负载,现在也有很多人将它作为内存式数据库在使用,memcached通过它的自定义协议与客户端交互,而XMemcached就是它的一个java客户端实现。"

简单的测试

Memcache入门
Memcache入门
Memcache入门

memClient.set("test", 0, "hello world");

memClient.set("test1", 30, "hello world 111");

区别在与第二个参数,他的含义是

第一个是存储的 key 名称,第二个是 expire 时间(单位秒) ,超过这个时间 ,memcached 将这个数据替换出去, 0 表示永久存储(默认是一个月) ,第三个参数就是实际存储的数据,可以是任意的 java 可序列化类型 。 

在过30秒之后再去取test1将取到null

更多xMemcache内容见https://code.google.com/p/xmemcached/wiki/User_Guide_zh

https://code.google.com/p/xmemcached/

http://xmemcached.googlecode.com/svn/trunk/apidocs/net/rubyeye/xmemcached/MemcachedClient.html

如果本文对您有帮助,点一下右下角的“推荐”