Redis 是高效的記憶體資料庫,FUSE 是Linux核心的一個模組,利用它可以用自訂的底層儲存建立自己的檔案系統(如之前提到過的MongoDB 的 gridfs-fuse)。本文要介紹的是一個甚至Redis儲存系統的檔案系統實現:redisfs
使用方法
安裝好redisfs後運行下面命令,指定Redis伺服器的host和port,指定掛載目錄,即可在此目錄下掛載一個以Redis作為儲存支援的檔案系統
redisfs --host=localhost --port=6379 --mount=/mnt/redis [--read-only] [--debug] [--prefix=skx]
同步機制
redisfs 選擇redis的主要原因是想利用redis的高效能及其同步機制,作者提供了兩種方法用於構建兩個同步的檔案系統:
1.使用redisfs將兩個不同機器上的不同目錄mount到同一個redis
2.上面一種方式可能導致至少一個檔案系統與Redis不在同一台機器上,從而導致不必要的網路開銷。的方式是在不同的機器上,設定主從兩台Redis,再直接用redisfs 去 mount 原生Redis,資料同步通過Redis自己的同步機制去做,但這樣做的代價是在Slave對應的機器上的檔案系統就變成唯讀了。
快照功能
redisfs 提供一個對檔案系統做快照的功能,快照功能的實現非常簡單,只需要將當前Redis中儲存的所有key(相當於檔案名稱)掃描一次,並且複製到新到key上面即可。如下:
$ redisfs-snapsot --from=skx --to=copy
上面操作就是把所有skx開頭的key複製到一份為copy開頭的key,下面再使用mount參數就可以用這個快照構建一個新的檔案系統了,操作如下:
# mkdir /tmp/safe# redisfs --prefix=copy --mount=/tmp/safe
具體安裝使用方式請參見官方頁面:http://www.steve.org.uk/Software/redisfs/