Memcache文件系统memcachefs部署和使用

简介:

介绍


memcachefs是基于FUSE的memcached文件系统,将memcache服务挂载到本地。允许查看缓存中的数据,就好像是磁盘上的文件。memcache的操作都将转换成针对普通文件般的操作。


项目地址:http://memcachefs.sourceforge.net/

 

使用场景


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

 

安装


1.安装依赖(使用root安装)


依赖

  • FUSE 2.5 or later

  • libmemcache 1.4 or later

 

a)安装fuse-2.9.3.tar.gz

1
2
3
4
5
6
7
cd  /tmp
wget http: //hivelocity .dl.sourceforge.net /project/fuse/fuse-2 .X /2 .9.3 /fuse-2 .9.3. tar .gz
tar  zxvf fuse-2.9.3. tar .gz
cd  fuse-2.9.3
. /configure
make
make  install


b)挂载fuse内核模块

1
2
modprobe fuse
lsmod |  grep  "fuse"


c)安装libmemcache-1.4.0.rc2.tar.bz2

1
2
3
4
5
6
cd  /tmp
wget http: //people .freebsd.org/~seanc /libmemcache/libmemcache-1 .4.0.rc2. tar .bz2
tar  xvf libmemcache-1.4.0.rc2. tar .bz2
cd  libmemcache-1.4.0.rc2
. /configure
make


编译出错,输出如下:

1
2
3
4
5
6
7
memcache.c: At top level:
../include/memcache/buffer.h:73: warning: inline function 'mcm_buf_remain_off' declared but never defined
../include/memcache/buffer.h:72: warning: inline function 'mcm_buf_remain' declared but never defined
../include/memcache/buffer.h:66: warning: inline function 'mcm_buf_len' declared but never defined
../include/memcache/buffer.h:73: warning: inline function 'mcm_buf_remain_off' declared but never defined
../include/memcache/buffer.h:72: warning: inline function 'mcm_buf_remain' declared but never defined
../include/memcache/buffer.h:66: warning: inline function 'mcm_buf_len' declared but never defined


解决方法,参考:

http://pietercvdmlinux.blogspot.com/2012_07_01_archive.html

1
2
wget  'http://svnweb.freebsd.org/ports/head/databases/libmemcache/files/patch-fix-inline?revision=248965&view=co'  -O libcache.patch
patch -p0 < libcache.patch


再次

1
2
make
make  install

 

2.下载安装memcachefs

1
2
3
4
5
6
7
8
9
mkdir  /usr/local/memcachefs
cd  /tmp
wget http: //jaist .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  --prefix= /usr/local/memcachefs
make
make  install
cd  /usr/local/memcachefs

 

3.挂载memcached

1
2
mkdir  /usr/local/cache
. /bin/memcachefs  192.168.11.52:11211  /usr/local/cache  #将远程的memcache挂载到本地


报错如下:

“./bin/memcachefs: error while loading shared libraries: libmemcache.so.0: cannot open shared object file: No such file or directory”


解决方法:

将/usr/local/lib添加到/etc/ld.so.conf

1
2
echo  "/usr/local/lib"  >>  /etc/ld .so.conf
/sbin/ldconfig


查看挂载情况:

1
mount  -l

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

 

使用


1.基本操作

1
2
3
4
5
6
cd  /usr/local
echo  "helloworld"  > cache /test_key  #设置一个cache数据,文件名是键,文件内容是值。等同于set key value操作。
cat  cache /test_key  #获取cache数据。等同于get key操作。
ll cache/  #列出所有键。注意第五列不是指大小,而是表示字符长度。第六七列时间属性。
rm  cache /test_key  #删除cache数据,等同于delete key操作。
mv  cache /username  cache /username .bak  #重命名

 

2.卸载

1
2
3
# mount #查看挂载
# umount /usr/local/cache #卸载
# fusermount -u /usr/local/cache #卸载


3.使用telnet客户端测试


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

get username.bak #telnet方法获取memcachfs设置的cache数据

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@test01  local ] # telnet 192.168.11.52 11211
Trying 192.168.11.52...
Connected to 192.168.11.52.
Escape character is  '^]' .
set  a 0 10 3
aaa
STORED
get username.bak
VALUE username.bak 0 6
ryanxu
END
quit
Connection closed by foreign host.
[root@test01  local ] # cat cache/a
aaa




















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1642071  ,如需转载请自行联系原作者



相关文章
|
存储 监控 前端开发
前端文件流、切片下载和上传:优化文件传输效率与用户体验 【最全】
文件传输是一个常见的需求。对于大文件的下载和上传,直接使用传统的方式可能会遇到性能和用户体验方面的问题。幸运的是,前端技术提供了一些高效的解决方案:文件流操作和切片下载与上传。本文将深入探讨这些技术,帮助你理解它们的原理和实现方法,以优化文件传输效率和提升用户体验。
前端文件流、切片下载和上传:优化文件传输效率与用户体验 【最全】
|
机器学习/深度学习 并行计算 编译器
了解NVIDAI显卡驱动(包括:CUDA、CUDA Driver、CUDA Toolkit、CUDNN、NCVV)
开发过程中需要用到GPU时,通常在安装配置GPU的环境过程中遇到问题;CUDA Toolkit和CUDNN版本的对应关系;CUDA和电脑显卡驱动的版本的对应关系;CUDA Toolkit、CUDNN、NCVV是什么呢?
16842 1
了解NVIDAI显卡驱动(包括:CUDA、CUDA Driver、CUDA Toolkit、CUDNN、NCVV)
|
C++
基于C++的简易文件管理系统设计与实现
基于C++的简易文件管理系统设计与实现
582 6
|
存储 缓存 API
DMA-BUF缓冲区共享和同步【ChatGPT】
DMA-BUF缓冲区共享和同步【ChatGPT】
|
监控 Ubuntu 安全
|
Ubuntu Linux 开发工具
WSL2(3)安装Linux headers完美解决方案
WSL2(3)安装Linux headers完美解决方案
2533 0
|
Linux Shell
Linux系统调试篇——stty修改串口波特率
Linux系统调试篇——stty修改串口波特率
|
存储 SQL 容灾
推荐一款好用的数据一致性校验工具
NineData 是玖章算术旗下的多云数据管理平台,它是一款即开即用的数据管理 SAAS 服务。当前 NineData 已经支持数十种常见同异构数据源(MySQL、SQLServer、CK 等)之间的结构对比、数据对比及数据订正能力。NineData 结构及数据对比作为独立服务,可以灵活支持 IDC、云主机自建及云托管数据源的数据一致性校验及快速修复。从使用体验、产品能力、稳定性及性能等维度综合来看,NineData 是一款综合实例比较强、比较难得的校验工具。
4581 1
推荐一款好用的数据一致性校验工具
二进制的优点与缺点
二进制的优点与缺点
3097 0
|
Java Windows
码神开源,War包反编译获得JAVA源码,竟然这样简单
码神开源,War包反编译获得JAVA源码,竟然这样简单
1178 0
码神开源,War包反编译获得JAVA源码,竟然这样简单