redis获取具有密钥开头的列表

时间:2015-01-23 07:41:34

标签: .net redis

我将一些键设置为Redis,并将键格式化为"userId-barcodeNo"

例如:

Key : 1-54a5f4, Value : {"Name":"Erkan"}

现在我需要获得一个列表,其中的键以“userId”开头。

我可以通过包含char(*) - http://redis.io/commands/KEYS

来获取密钥列表
KEYS *UserId*

但是如何获得带有以userId

开头的键的项目

我需要这样的事情:Get *UserId*

在.Net这里是我的代码

        using (var ioc = new Ioc())
        {
            var client = ioc.Resolve<IRedisClientsManager>().GetClient();
            var key = string.Format("*{0}*", User.Identity.GetUserId());
            var list = client.Get<Coupon>(key);
        }

它返回null。

redis支持吗?

2 个答案:

答案 0 :(得分:2)

您可以使用MGET一次获取所有密钥。因此,您可以在一次调用中获取键,而不是在另一次调用中捕获值。 http://redis.io/commands/mget

答案 1 :(得分:1)

好的,我在.Net ServisStackRedis包中找到了解决方案。

 using (var ioc = new Ioc())
    {
        var client = ioc.Resolve<IRedisClientsManager>().GetClient();
        var patern= string.Format("*{0}*", User.Identity.GetUserId());

        var keylist = c.SearchKeys("*" + patern + "*");
        var list = client.GetAll<Coupon>(keylist);
    }

首先,我使用SearchKeys方法查找适合我的模式的项目。它返回一个密钥列表,而不是我可以将密钥列表传递给GetAll方法。