StackExchange.Redisで閲覧履歴を実装
4043 ワード
開発メモ
StackExchange.Redisの使い方は下記参照
https://github.com/StackExchange/StackExchange.Redis
登録
//RedisのDBを選択
IDatabase db = RedisRepository.SelectCache(0);
//キーを生成
var key = "hoge";
// スコア算出の為、Unixtimeを取得
var unixSeconds = DateTimeOffset.Now.ToUnixTimeSeconds();
// 経過秒数をスコアとして保存
var score = (double)unixSeconds;
//閲覧履歴の情報をソート済みセット型で登録
db.SortedSetAdd(key, "りんご", score);
//保持期間を設定する場合は下記(例:30日)
db.KeyExpire(key, new TimeSpan(30, 0, 0, 0));
//最大件数を設定する場合は下記
var current = db.SortedSetRangeByScore(key);
var maxCnt = 10;
if (current.Count() > maxCnt)
{
//最下位のデータを削除
db.SortedSetRemoveRangeByRank(key,0,0);
}
取得
//最新の閲覧順(スコアが高い順)に取得
var list = db.SortedSetRangeByScore(key, order: Order.Descending);
//RedisのDBを選択
IDatabase db = RedisRepository.SelectCache(0);
//キーを生成
var key = "hoge";
// スコア算出の為、Unixtimeを取得
var unixSeconds = DateTimeOffset.Now.ToUnixTimeSeconds();
// 経過秒数をスコアとして保存
var score = (double)unixSeconds;
//閲覧履歴の情報をソート済みセット型で登録
db.SortedSetAdd(key, "りんご", score);
//保持期間を設定する場合は下記(例:30日)
db.KeyExpire(key, new TimeSpan(30, 0, 0, 0));
//最大件数を設定する場合は下記
var current = db.SortedSetRangeByScore(key);
var maxCnt = 10;
if (current.Count() > maxCnt)
{
//最下位のデータを削除
db.SortedSetRemoveRangeByRank(key,0,0);
}
//最新の閲覧順(スコアが高い順)に取得
var list = db.SortedSetRangeByScore(key, order: Order.Descending);
Author And Source
この問題について(StackExchange.Redisで閲覧履歴を実装), 我々は、より多くの情報をここで見つけました https://qiita.com/githiroshi/items/9e26c76fd93bf891fcec著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .