我們使用Redis的數據庫爲:數據庫來存儲壓縮文件
key -> (file1, file2, file3)
值始終爲三個壓縮文件的列表。
並非所有的按鍵則有3個文件,即
key2 -> (file4, file5)
文件正在使用的zlib壓縮。 文件大小在50 - 120 K之間壓縮。
我想在數據庫中存儲「完整」密鑰(列表中有3個文件的密鑰), 。
到現在爲止,我存儲在MySQL表中的數據:
key_id : INTEGER , PRIMARY KEY
first : BLOB
second : BLOB
third : BLOB
這工作很細緩慢插入 除外(MySQL服務器不會在同一時間其他的東西)。
我會查詢非常罕見的數據,但我希望能夠輕鬆地逐一獲取它們 。
Redis是一個數據庫,我知道我可以轉儲到一個文件(rdb文件)。
所以我認爲使用另一個DBMS是減少的。 但是redis數據庫是內存有限的,所以我不能只是 等待完成值(文件)的生產,然後 只是轉儲到rdb文件。
我想創建包含 只有「完整」鍵的較小的rdb文件。 即
在時間1 Redis的包含以下內容:
key3 -> (a, b, c)
key14 -> (e, f)
key1 -> (g, h, i)
那麼如果我決定轉儲轉儲文件到1.rdb只應包含以下內容:
key3 and key14
如果是轉儲成功我將刪除已轉儲的密鑰(key3,key4)
and redis should have:
key14 -> (e, f)
現在時間5 Redis的包含:
key5 -> (i, j , k)
key14 -> (d, e, f)
key6 -> (l, m)
所以,如果我保存到2.rdb該文件只應包含:
KEY5,key14
,然後上面的鍵應該從redis中刪除。
這可能嗎?如果它很重要,我正在使用python。
你對這項任務有另一個想法嗎? 另一個DBMS,直接存儲到文件系統等
P.S忘記提及總共會有大約 15.000.000個密鑰,所以會有15000.000 * 3個文件。
而且我用Linux與ext3文件系統
您可能可以使用新的(在redis 2.6中)[MIGRATE](http://redis.io/commands/migrate)命令來遷移(即將這些密鑰移動到另一個數據庫),然後[保存] (http://redis.io/commands/save)那個數據庫。 –