4

私のサイトには、Redisをデータストアとして使用したいシンプルな毎日のヒットカウンターがあります。

redisに有効期限があるという理由だけで、データを消去するためにcronを設定する必要はありません。それに、試してみたいです。

毎日のヒットをURLベースで保存します。

URLの毎日のヒットを保存し、1日の終わりに期限切れにする方法を教えてください。

例えば:

今日の増分:www.google.com >> 1
今日の増分:www.google.com >> 2
今日の増分:www.google.com >> 3
今日の増分:www.yahoo.com >> 1
今日の増分:www.yahoo.com >> 2

これらのカウンターを1日の終わりに期限切れにするにはどうすればよいですか?期限切れにすると、カウンターがリセットされます。

思考プロセスがずれているような気がします。私は物事を逆行していますか?

4

4 に答える 4

7

「今日」ではなく、現在の日付をキーとして使用する必要があります。

現在の日付のハッシュを設定します。各URLはそのハッシュ内のキーです。その場合、更新は次のようになります

HINCRBY 101021 www.google.com 1

また、データを保持する必要がなくなったら、DELコマンドを使用して1日のハッシュ全体を削除できます。おそらく、1〜2か月前のすべてに対してDELを呼び出す手動でトリガーされるスクリプトを設定します。

ハッシュに有効期限を設定することもおそらく機能しますが、私は試していません。毎日異なるキーを使用することは、「今日」のキーのように正確な時間に発生する有効期限に依存しないことを意味します。

于 2010-10-21T00:45:06.627 に答える
2

もう1つのオプションは、redis>=2.1.3を使用することです。そのバージョン以降、expireは希望どおりに機能します。私はこれと同じことをするために2.1.5(gitから)を使用しています。私はexpireとTomが説明するのと同様の方法の両方を使用します。キーに日付を入れ、有効期限を設定します。redis> = 2.1.3を使用すると、カウンターをリセットせずに、インクリメントされたキーに期限切れを設定できます。

両方の理由は、a)1日以上保存し、b)今日の統計を取得するときに、何らかの理由で期限切れのキーがまだ存在する場合、それらを照会しないためです。たとえば、ハッシュ:キーYEAR:MONTH:DAY:URLを持つSERVERがインクリメントされ、有効期限が今日+3日に設定されます。チャームのように機能します。

于 2010-11-19T20:19:53.283 に答える
1

私は最近、アプリに組み込まれている分析のソリューションを実行しました。

incr www.google.com 1

その後、毎晩、cronジョブで:

getset www.google.com 0

getsetはアトミックに値を返し、それを新しい値に設定します。これにより、1回のヒットを逃さずにカウンターがリセットされます。

私もたまたま:

lpush yearly:www.google.com <value from getset>
ltrim yearly:www.google.com 0 364 (this is optional)

これにより、「昨夜」の値がリストに追加されます。リストはオプションでトリミングされ、最大1年の値が格納されます。(これは60分のスパークラインを行うときに本当に効果的です)

于 2010-12-03T04:15:30.453 に答える
0

現在の日付を使用する、より簡単なオプションが提案されています。私がしているのは、年月日をキーとして使用することです。しかし、ハッシュを使用するのではなく、ページを日付にキーとして追加することで問題を単純化します。

例えば:

INCR 20110425:www.google.com
 INCR 20110424:www.yahoo.com
..。
INCR 20110426:www.google.com

後で情報を簡単に取得できるようにするために、必要に応じて使用する別の解決策は、情報を並べ替えられたセットに格納することです。

例えば:

$rank = ZRANKヒット数:www.google.com20110425 ZADD
ヒット数:www.google.com($ランク+1)20110425

このバリエーションでは、www.google.comのすべてのヒットを取得するために、次のように要求するだけです。

ZRANGEヒット:www.google.com 0 -1

また

ZREVRANGEヒット:www.google.com 0 -1

また

SORTヒット:www.google.com..。

これが助けになることを願っています

于 2011-04-27T09:15:23.657 に答える