自分が取り組んでいるプロジェクトの「フレンドストリーム」を作成しようとしています。個々のユーザーのストリームをRedisZSETSに保存しています。何かのようなもの:
key : { stream_id : time }
user1-stream: { 1:9931112, 3:93291, 9:9181273, ...}
user2-stream: { 4:4239191, 2:92919, 7:3293021, ...}
user3-stream: { 8:3299213, 5:97313, 6:7919921, ...}
...
user4-friends: [1,2,3]
今のところ、user4のフレンドストリームを作成するには、次のように呼び出します。
ZUNIONSTORE user4-friend-stream, [user1-stream, user2-stream, user3-stream]
ただし、合計1〜2000個を超える要素のZSETをマージしようとすると、ZUNIONSTOREの速度が低下します。
RedisにZSETSでマージソートを実行させ、結果を数百要素に制限してもらいたいと思っています。私がやりたいことをする既製のデータストアはありますか?そうでない場合、redisのようなデータストアを開発するためのフレームワークはありますか?
Redisをフォークして必要な機能を追加するだけでよいと思いますが、それを避けたいと思っていました。