簡體   English   中英

StackExchange.Redis - 如何獲取密鑰的類型?

[英]StackExchange.Redis - How to get the type of the key?

我正在嘗試通過 StackExchange.Redis 通過 Redis 中的 dbX 列表 go 並查找特定type的鍵。 stringlistsetzsethash類型的鍵。 假設我想在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。

https://redis.io/commands/type

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM