0

Redis データベースを次のように使用します。

key -> (file1, file2, file3)

値は常に 3 つの圧縮ファイルのリストです。

すべてのキーに 3 つのファイルがあるわけではありません。

key2 -> (file4, file5)

ファイルは zlib を使用して圧縮されます。ファイルのサイズは 50 ~ 120 K 圧縮されています。

「完全な」キー(リストに3つのファイルがあるもの)をデータベースに保存したい。

これまで、データを MySQL テーブルに保存していました。

key_id : INTEGER , PRIMARY KEY
first : BLOB
second : BLOB
third : BLOB

これは、挿入が遅いことを除いて、かなりうまく機能します (Mysql Server は同時に他のことも行います)。

データをクエリすることはめったにありませんが、1 つずつ簡単に取得できるようにしたいと考えています。

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) を削除します。

redis には以下が必要です。

key14 -> (e, f)

5 の時点で、redis には以下が含まれます。

key5 -> (i, j , k)
key14 -> (d, e, f)
key6 -> (l, m)

したがって、2.rdb に保存すると、ファイルには以下のみが含まれます。

キー5、キー14

次に、上記のキーを redis から削除する必要があります。

それは可能ですか?問題があれば、私はpythonを使用しています。

このタスクについて別のアイデアはありますか? 別の DBMS 、ファイルシステムなどに直接保存します。

PS合計で約15.000.000個のキーがあるため、15.000.000 * 3ファイルになることを忘れていました。

また、ext3ファイルシステムでLinuxを使用しています

4

1 に答える 1

0

すべてを1つのシステムにまとめようと思います。キーセットを管理するためにRedisが本当に必要ですか?頻繁にアクセスされるデータベーステーブルは、ほとんどがメモリにキャッシュされたままである必要があります。

于 2012-11-18T17:00:01.663 に答える