繁体   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