Redis HyperLogLogによる効率的なユニークユーザー数計数

HyperLogLogの概要とメリット Webサービスにおいて、特定のページのユニークユーザー数(UV)を計測することは非常に一般的な要件です。単純なアクセス数(PV)であればカウンタをインクリメントするだけで済みますが、重複を排除したUV計数の場合、単純なアプローチではメモリ効率が課題となります。 例えば、RedisのSet型を使用してユーザーIDを保存する方法があります。 ...

8月23日 15:50 投稿

Redisビットマップを使った月間チェックイン機能のJava実装

ポイントサービスやキャンペーンアプリでよくある「本日のチェックイン」機能を、Redis のビットマップ機能を使って高速・省メモリに実装する方法を解説します。Redis の SETBIT / BITFIELD を活用することで、1 ユーザーあたり月 31 日分のデータをわずか 4 byte で保持できます。 設計方針 1 ビット = 1 日の出欠を表現 キーは checkin:{userId}:{yyyyMM} の形式 offse ...

7月16日 17:12 投稿

Redis Sorted Set 削除が効かない原因と回避策

Spring Data Redis の ZSetOperations.remove(K key, Object… values) を使っても、値を「更新した後」に削除しようとすると 該当メンバーが見つからず削除できない という現象が発生した。本記事では再現手順と回避策を示す。 事象の概要 新規レコードを追加(addData) 一部フィールドを変更して再追加(updateData) 更新後の値を指定して削除(removeData) 3 の時 ...

5月11日 06:03 投稿