Memcache文件系統(tǒng)memcachefs部署和使用介紹memcachefs是基于FUSE的memcached文件系統(tǒng),將memcache服務(wù)掛載到本地。允許查看緩存中的數(shù)據(jù),就好像是磁盤上的文件
Memcache文件系統(tǒng)memcachefs部署和使用
介紹
memcachefs是基于FUSE的memcached文件系統(tǒng),將memcache服務(wù)掛載到本地。允許查看緩存中的數(shù)據(jù),就好像是磁盤上的文件。memcache的操作都將轉(zhuǎn)換成針對(duì)普通文件般的操作。
項(xiàng)目地址:
使用場(chǎng)景
基于本地磁盤緩存文件都可以用memcachefs來實(shí)現(xiàn),效率上比磁盤更強(qiáng)大。比如session文件等等。 如果先前的session信息就存在本地磁盤上,可以直接將memcache掛載到當(dāng)前session目錄上,無需更改程序,完美解決。
安裝
1.安裝依賴(使用root安裝)
依賴
FUSE 2.5 or later
libmemcache 1.4 or later
a)安裝fuse-2.9.3.tar.gz
cd /tmp wget tar zxvf fuse-2.9.3.tar.gz cd fuse-2.9.3 ./configure make make installb)掛載fuse內(nèi)核模塊
modprobe fuse lsmod | grep "fuse"c)安裝libmemcache-1.4.0.rc2.tar.bz2
cd /tmp wget ~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編譯出錯(cuò),輸出如下:
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解決方法,參考:
wget 'http://svnweb.freebsd.org/ports/head/databases/libmemcache/files/patch-fix-inline?revision=248965&view=co' -O libcache.patch patch -p0 < libcache.patch再次
make make install2.下載安裝memcachefs
mkdir /usr/local/memcachefs cd /tmp wget tar -zxvf memcachefs-0.5.tar.gz cd memcachefs-0.5 ./configure --prefix=/usr/local/memcachefs make make install cd /usr/local/memcachefs3.掛載memcached
mkdir /usr/local/cache ./bin/memcachefs 192.168.11.52:11211 /usr/local/cache #將遠(yuǎn)程的memcache掛載到本地報(bào)錯(cuò)如下:
“./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
echo "/usr/local/lib" >> /etc/ld.so.conf /sbin/ldconfig查看掛載情況:
mount -lmemcachefs on /usr/local/cache type fuse.memcachefs (rw,nosuid,nodev)
使用
1.基本操作
cd /usr/local echo "helloworld" > cache/test_key #設(shè)置一個(gè)cache數(shù)據(jù),文件名是鍵,,文件內(nèi)容是值。等同于set key value操作。 cat cache/test_key #獲取cache數(shù)據(jù)。等同于get key操作。 ll cache/ #列出所有鍵。注意第五列不是指大小,而是表示字符長度。第六七列時(shí)間屬性。 rm cache/test_key #刪除cache數(shù)據(jù),等同于delete key操作。 mv cache/username cache/username.bak #重命名2.卸載
# mount #查看掛載 # umount /usr/local/cache #卸載 # fusermount -u /usr/local/cache #卸載3.使用telnet客戶端測(cè)試
set a 0 10 3 #10s過期。10s過后,cache目錄下的a文件將被刪除。
get username.bak #telnet方法獲取memcachfs設(shè)置的cache數(shù)據(jù)
cat cache/a #通過memcachefs獲取鍵a數(shù)據(jù)
[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本文出自 “SQL Server Deep Dives” 博客,請(qǐng)務(wù)必保留此出處
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com