mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
ringa_lee
@ybak の回答に基づいて、比較的シンプルで実用的な解決策を紹介します。
Redis が占有するメモリを制限します。Redis は独自のデータ排除戦略に従ってホット データをメモリにロードします。 そこで、20W データが占めるおおよそのメモリを計算し、Redis のメモリ制限を設定します。
問題はどのデータですか?
ユーザーデータなど。データベースには 2,000 万件のエントリがあります。 アクティブ ユーザー: 2 日以内にログインしたユーザー (便宜上、1 日以内のアクティブ ユーザー) を redis sortSet に入れます。セットが既に存在する場合は、そのスコア (ログイン時間) が ZADD にログインします。上書きされます。キー: ログイン:ユーザー、値: スコアのタイムスタンプ、値のユーザー ID。定期的なタスクを設定します。たとえば、ソート セットのデータを前日の 03:00:00 より前に削除するなどです (セットが無秩序に増大しないようにし、過去 1 日のアクティブ ユーザーを維持するため) )。
取得時に、現在のタイムスタンプ (int 10 桁) を取得し、スコア範囲に従って過去 24 時間のアクティブ ユーザーを取得するために 1 日を減算します。
あなたの質問を見ると、Redis をキャッシュとして使用する必要があります。 キャッシュの無効化を実装する簡単な方法を提供します: LRU (最近ではほとんど使用されなくなりました) つまり、Redis キャッシュがヒットするたびに、ヒット キャッシュへの特定の ttl (有効期限) (10 分など、特定の状況に応じて設定) 一定の時間が経過すると、ホット データの ttl は大きくなり、自動的に期限切れになりません。コールド データは基本的に期限切れになります。設定された ttl はすぐに無効になります。
Redis メモリ データ セットのサイズが一定のサイズに増加すると、データ削除戦略が実装されます。
redis は 6 つのデータ削除戦略を提供します:
volatile-lru: 有効期限付きのデータセットから最も最近使用されていないデータを選択し、削除しますvolatile-ttlvolatile-randomallkeys-lruallkeys -randomno-enviction
@ybak の回答に基づいて、比較的シンプルで実用的な解決策を紹介します。
Redis が占有するメモリを制限します。Redis は独自のデータ排除戦略に従ってホット データをメモリにロードします。
そこで、20W データが占めるおおよそのメモリを計算し、Redis のメモリ制限を設定します。
問題はどのデータですか?
ユーザーデータなど。データベースには 2,000 万件のエントリがあります。
アクティブ ユーザー:
2 日以内にログインしたユーザー (便宜上、1 日以内のアクティブ ユーザー) を redis sortSet に入れます。セットが既に存在する場合は、そのスコア (ログイン時間) が ZADD にログインします。上書きされます。キー: ログイン:ユーザー、値: スコアのタイムスタンプ、値のユーザー ID。定期的なタスクを設定します。たとえば、ソート セットのデータを前日の 03:00:00 より前に削除するなどです (セットが無秩序に増大しないようにし、過去 1 日のアクティブ ユーザーを維持するため) )。
取得時に、現在のタイムスタンプ (int 10 桁) を取得し、スコア範囲に従って過去 24 時間のアクティブ ユーザーを取得するために 1 日を減算します。
あなたの質問を見ると、Redis をキャッシュとして使用する必要があります。
キャッシュの無効化を実装する簡単な方法を提供します: LRU (最近ではほとんど使用されなくなりました)
つまり、Redis キャッシュがヒットするたびに、ヒット キャッシュへの特定の ttl (有効期限) (10 分など、特定の状況に応じて設定)
一定の時間が経過すると、ホット データの ttl は大きくなり、自動的に期限切れになりません。コールド データは基本的に期限切れになります。設定された ttl はすぐに無効になります。
Redis メモリ データ セットのサイズが一定のサイズに増加すると、データ削除戦略が実装されます。
redis は 6 つのデータ削除戦略を提供します:
volatile-lru: 有効期限付きのデータセットから最も最近使用されていないデータを選択し、削除します
volatile-ttl
volatile-random
allkeys-lru
allkeys -random
no-enviction