memcachefs—memcache文件系统

memcachefs—memcache文件系统

一.介绍

memcached使用详解参见: http://www.ttlsa.com/html/673.html

memcache设计的目的是内存缓存,而不是数据存储也不是高可用性存储库。

基于memcache开发的来扩展memcache应用有:

1.MySQL的memcached引擎

2.perl的apache session处理模块,如Apache::Session::Memcached,Apache::Session::Store::Memcached

3.repcached: 目的是为了解决memcache高可用性的问题,实现故障转移。具体参见: http://repcached.lab.klab.org/

4.memcachedb: 持久性分布式的memcached数据库。具体参见: http://memcachedb.org/

5.memcachefs: memcached文件系统。项目地址: http://memcachefs.sourceforge.net/

下面将介绍memcachefs应用。

memcachefs是基于FUSE的memcached文件系统,将memcache服务挂载到本地。允许查看缓存中的数据,就好像是磁盘上的文件。

memcache的操作都将转换成针对普通文件般的操作。

二.使用场景

基于本地磁盘缓存文件都可以用memcachefs来实现,效率上比磁盘更强大。。比如session文件等等。 如果先前的session信息就存在本地磁盘上,可以直接将memcache挂载到当前session目录上,无需更改程序,完美解决。

三.安装

# apt-get install libfuse-dev libmemcache-dev //解决memcachefs依赖关系,否则安装失败。

# wget http://cdnetworks-kr-2.dl.sourceforge.net/project/memcachefs/memcachefs/0.5/memcachefs-0.5.tar.gz

# tar zxvf memcachefs-0.5.tar.gz

# cd memcachefs-0.5/

# ./configure

# make

# make install

# memcachefs 127.0.0.1:11211 /cache //挂载到本地,也可将远程的memcache挂载到本地

# echo “value” > /cache/key //设置一个cache数据,文件名是键,文件内容是值。等同于set key value操作。

# cat /cache/key //获取cache数据。等同于get key操作。

# ll /cache/ //列出所有键。注意第五列不是指大小,而是表示字符长度。第六七列时间属性,挺有意思的。1969-12-31 16:00刚好是0(If the device is not able to be modeled the collection time is 0 or NULL.)

-rw-rw-rw- 1 root root 6 1969-12-31 16:00 key

-rw-rw-rw- 1 root root 5 1969-12-31 16:00 x.bak

# rm /cache/key //删除cache数据,等同于delete key操作。

# mv /cache/x /cache/x.bak //重命名

# mount

memcachefs on /cache type fuse.memcachefs (rw,nosuid,nodev)

# umount /cache //卸载

# fusermount -u /cache //卸载

四.同时使用telnet客户端测试

# telnet 127.0.0.1 11211

set a 0 10 3 //10s过期。10s过后,/cache目录下的a文件将被删除。

aaa

STORED

get x.bak //telnet方法获取memcachfs设置的cache数据

VALUE x.bak 0 5

xxxx

END

# cat /cache/a //通过memcachefs获取键a数据

aaa