ここに私ができたことがあります。私は自分自身のセッションオブジェクトコレクションを作成し、すべてのキー(DB1に入れている)をつかんで、すべてのキーをループしてTTLを取得します。
using StackExchange.Redis;
using StackExchange.Redis.Extensions.Newtonsoft;
using StackExchange.Redis.Extensions.Core;
using System.Linq;
private static Lazy<ConnectionMultiplexer> conn = new Lazy<ConnectionMultiplexer>(
() => ConnectionMultiplexer.Connect(ConfigurationManager.AppSettings["RedisServerMaster"]
+ "," + ConfigurationManager.AppSettings["RedisServerSlave"]
+ "," + ConfigurationManager.AppSettings["RedisOptions"])
public class SessionObjects
{
public string SessionId { get; set; }
public TimeSpan? TTL { get; set; }
}
List<SessionObjects> lso = new List<SessionObjects>();
var serializer = new NewtonsoftSerializer();
StackExchangeRedisCacheClient cacheClient;
cacheClient = new StackExchangeRedisCacheClient(rConn, serializer, 1);
IEnumerable<string> keys = cacheClient.SearchKeys("*");
var db = rConn.GetDatabase(1);
foreach (var s in keys)
{
SessionObjects so = new SessionObjects();
so.SessionId = s;
so.TTL = db.KeyTimeToLive(s);
lso.Add(so);
}
意志あなたがアクセスできるか(1つのクライアントは、多くのキーと値のペアを格納することができます) – Aravind
私はそう思う。すべてのキーは、私はそれはあなたの使用しているクライアントの正確な数を与えないことを意味?十分できますが、私が推測する値を得ることもできます。それはセッション状態プロバイダが既にロックなどとのオープンな接続を持っていることと関係があり、私はそれを私のクエリを行うために再利用したいと思います – Rogier
それはキーバリューストアです。あなたがロックできるソートのライブ接続があるかどうかはわかりません。クライアントがRedisキャッシュに接続するための資格情報を持っていれば、いつでも使用できます。 – Aravind