【问题标题】:Redis lexicographic search in reverse orderRedis字典序搜索倒序
【发布时间】:2016-03-13 02:48:02
【问题描述】:

我在 Redis 中有一个排序集,用于存储用户 ID 和上次登录时间戳。

添加到排序集(使用下面的代码)就像使用 C# 的 StackExchange.Redis 的魅力一样,我可以看到在 redis-cli 中添加的值。

IDatabase rdb = redis.GetDatabase();
rdb.SortedSetAdd("LOGINS", "userid:timestamp", 0.0, CommandFlags.None);

我现在需要查询 Redis DB 以获取用户 ID 的上次登录时间戳。

redis-cli 中,我可以运行以下查询来获取用户 ID 的最后登录时间戳:

zrevrangebylex LOGINS "[userid\xff" [userid LIMIT 0 1

但是,我没有找到在 StackExchange.RedisServiceStack.Redis 中运行此命令以按相反顺序进行字典搜索的方法。

如何在 C# 中运行上述 redis-cli 查询?

【问题讨论】:

    标签: c# redis stackexchange.redis servicestack.redis


    【解决方案1】:

    简单地说:该命令似乎已被省略。我会add a github issue for the next deploy。现在,您可以使用 Lua (ScriptEvaluate) 来调用它(虽然很笨拙,但它应该可以工作)。

    【讨论】:

    • 感谢 Marc 为此添加 github 问题并提出解决方法。对于其他遇到此问题的人,这是我们可以使用 StackExchange.Redis const string script = "return redis.call('zrevrangebylex', 'LOGINS', '[0301861887\xff', '[0301861887', 'LIMIT', '0', '1')"; var prepared = LuaScript.Prepare(script); var result = (string[])db.ScriptEvaluate(prepared); foreach (var res in result) Console.WriteLine(res); 调用 Lua 的方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2011-09-16
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2017-04-22
    相关资源
    最近更新 更多