[英]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.