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]}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With