简体   繁体   中英

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

I am trying to go through the list of dbX in Redis via StackExchange.Redis and look for the particular type of the keys. There are string , list , set , zset , hash types of keys. Lets say I would like to find the list types of keys in the db1 , I tried the following:

RedisCacheClient _client;
...
IRedisDatabase database = _client.GetDb(1);
List<InfoDetail> categorizedInfo = await database.GetInfoCategorizedAsync();
IEnumerable<InfoDetail> infos = categorizedInfo.Where(i => i.Category == "Keyspace");

This helps me with getting the basic info about the keys keys=9,expires=0,avg_ttl=0 but not the types.

I can find all the keys:

IEnumerable<string> keys = await database.SearchKeysAsync("*");

But that gives me only the names, not the types of the keys. So, how do I find the type of the key?.

Is this possible to do?

Thanks.

I think I have found the solution. the IRedisDatabase type has the Database propery of type IDatabase , and IDatabase type has KeyType() method that I could use (it should have been GetKeyType() , I think, which would've made it much easier to find). With that, I was able to list the keys with types:

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));

the result looks something like this:

{[myHash, Hash]}
{[myZSet, SortedSet]}
{[myString, String]}
{[mySet, Set]}
{[mylist, List]}

Redis has TYPE command which gives you the type of the key. I suppose any client would support this.

Returns the string representation of the type of the value stored at key. The different types that can be returned are: string, list, set, zset, hash and stream.

https://redis.io/commands/type

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM