イベントのリストをレディスのタイムラインに保存したいと思います。私はスコアとして1970年以来秒単位のソートされたセットを考えていて、クイックルックアップとレンジ検索が可能です。レディスでのイベントタイムラインの保存
問題は、これらのイベントのそれぞれがいくつかのキー(約3つ)でオブジェクトを表現したいので、ソートされた一連のIDを格納します。アプリケーションは、 ID。
だから会話はこのような何かを行くだろう:> ZRANGEBYSCORE events start end
1) "16"
2) "17"
> HGETALL events:16
1) "key1"
2) "val1"
...
> HGETALL events:17
...
が整理したり、それぞれの結果のために別々の呼び出しを行うアプリケーションを避けるだろう物事を行うには良い方法があります。このオーバーヘッドを避けるために、redis-server側ですべてを実行できますか?それは大きな問題ですか?
PS。私はノードクライアントを使用していますが、私の質問は他の言語にも当てはまります。
私たちは、この正確なアプローチを類似のものに使用します。また、Redisのスクリプトブランチでは、1回のトリップでこれを行うことができます。 – tddmonkey
この情報をすべて1つのフィールドに格納することには欠点はありませんか? rdbmsフィールドにcsvを格納するのと同じですか?それはスピードのトレードオフですか? – Adam
オブジェクトが小さい場合は、実際の欠点はありません。オブジェクトが大きく、部分的な更新をサポートしたい場合や、さまざまなコンテナからオブジェクトを共有する場合は、欠点があります。 csvに関するあなたの発言に関しては、すべてのデータベースシステムは行(DB2、PostgreSQL、Oracleなど)を直列化する必要があります。それらのほとんどは可変長データをサポートしています(区切り文字またはサイズ接頭辞付き)。彼らが使用するフォーマットはバイナリで最適化されていますが、複雑さの点でシリアライズのコストはシンプルなcsvのローで得られるものとそれほど変わりません。 –