我将一些键设置为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支持吗?
答案 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方法。