我正在尝试通过 StackExchange.Redis 浏览 Redis 中的 dbX 列表,并查找键的特定类型
。键有 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
的基本信息,但不能获取类型的基本信息。
我可以找到所有的 key :
IEnumerable<string> keys = await database.SearchKeysAsync("*");
但这只给了我名称,而不是键的类型。
那么,如何找到 key 的类型
?
这可以做到吗?
谢谢。
最佳答案
我想我已经找到了解决方案。
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]}
关于c# - StackExchange.Redis - 如何获取 key 的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58826459/