【问题标题】:Nodejs redis query dataNodejs redis 查询数据
【发布时间】:2016-04-29 03:01:37
【问题描述】:

我已经在我的节点 js 应用程序中集成了 redis。我正在使用 npm 模块 "redis" 我可以通过以下方式设置值:

redisClient.set('users_test', JSON.stringify({name: 'testName', email: 'testEmail', phone: 'testPhone', createdAt: <date>}), redis.print)
redisClient.get('users_test', function(err, users_test) {
            console.log('\n\nREDIS TEST USER: ' + JSON.parse(users_test))
})

考虑我的应用程序在 redis 中设置了 100 个具有不同键的此类用户。现在我想检索插入日期范围的用户。如何像我们在 mongodb、mysql 等中一样查询 redis db 以检索具有特定条件的数据? 我知道我将不得不以其他方式插入数据而不是字符串。请指导我完成这个。 提前致谢。

【问题讨论】:

    标签: node.js redis


    【解决方案1】:

    您应该使用唯一密钥保存每个用户。

    redisClient.set('user_' + user_id, ...);
    

    或者在您的情况下使用不同的数据类型,HASH 或 SORTED SET。看看this tutorial,里面提到了所有类型都有使用示例。

    【讨论】:

    • 我明白这一点,我正在存储所有具有唯一 ID 的用户。但是我可以查询具有特定条件的用户吗?
    • 不,redis 实际上不是为了那个。唯一支持某种连续选择的数据类型是SORTED SET,可以通过score参数redis.io/commands/zrangebyscore查询数据。
    • 好的。那么我可以这样做 -> 获取所有具有以“users_”开头的键的对象吗?
    【解决方案2】:

    假设 redis 是您选择的数据后端,正确的做法是将用户添加到带有redisClient.zadd(...) 的 SORTED SET 中,并使用日期作为分数。稍后您可以使用redisClient.zrangebyscore(...) 按分数获取排序集的子集。进一步阅读here

    请注意,如果您想按超过一个分数(添加日期)查找用户,redis 的吸引力就会降低(尽管仍有可能)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-22
      • 2018-09-09
      • 2012-03-20
      • 2021-10-02
      • 2021-06-08
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多