tridy
tridy

Reputation: 1260

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.

Upvotes: 4

Views: 4358

Answers (2)

tridy
tridy

Reputation: 1260

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]}

Upvotes: 3

Tuan Anh Tran
Tuan Anh Tran

Reputation: 7237

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

Upvotes: -1

Related Questions