[英]StackExchange.Redis - How to get the type of the key?
我正在嘗試通過 StackExchange.Redis 通過 Redis 中的 dbX 列表 go 並查找特定type
的鍵。 有string
、 list
、 set
、 zset
、 hash
類型的鍵。 假設我想在db1
中找到鍵的list
類型,我嘗試了以下方法:
RedisCacheClient _client;
...
IRedisDatabase database = _client.GetDb(1);
List<InfoDetail> categorizedInfo = await database.GetInfoCategorizedAsync();
IEnumerable<InfoDetail> infos = categorizedInfo.Where(i => i.Category == "Keyspace");
這有助於我獲取有關鍵keys=9,expires=0,avg_ttl=0
但不是類型的基本信息。
我可以找到所有的鑰匙:
IEnumerable<string> keys = await database.SearchKeysAsync("*");
但這只給了我名稱,而不是鍵的類型。 那么,如何找到密鑰的type
?
這可能嗎?
謝謝。
我想我已經找到了解決方案。 IRedisDatabase
類型具有IDatabase
類型的Database
屬性,並且IDatabase
類型具有我可以使用的KeyType()
方法(我認為它應該是GetKeyType()
,這樣會更容易找到)。 這樣,我就可以列出具有類型的鍵:
RedisCacheClient _client;
...
IRedisDatabase redisDatabase = _client.GetDb(1);
IEnumerable<string> keys = await redisDatabase.SearchKeysAsync("*");
IDatabase database = redisDatabase.Database;
Dictionary<string, RedisType> keysWithTypes = keys.ToDictionary(k => k, k => database.KeyType(k));
結果看起來像這樣:
{[myHash, Hash]}
{[myZSet, SortedSet]}
{[myString, String]}
{[mySet, Set]}
{[mylist, List]}
Redis 有TYPE
命令,可以為您提供密鑰的類型。 我想任何客戶都會支持這一點。
返回存儲在 key 的值的類型的字符串表示形式。 可以返回的不同類型有:string、list、set、zset、hash 和 stream。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.