首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用NodeJS的Redis -创建一组10个项目

使用NodeJS的Redis -创建一组10个项目
EN

Stack Overflow用户
提问于 2017-02-23 20:49:43
回答 1查看 55关注 0票数 0

我目前正在用Angular2、NodeJS和Redis构建一个小型应用程序,其中用户信息将存储在Redis实例中。我是Redis的新手,在尝试可视化我需要创建的功能时遇到了困难。

用户通过Angular2前端在输入表单中输入单词。然后将该单词转换为不同的字符串,然后将这些值以对象的形式存储在存储中(Redis)。只需要存储最后10个项,因此存储DB的长度需要为10,其中最新的项被附加到集合中,如果长度已经是10,则最后一个项被修剪。

我很难在Redis中实现这一点,而且我在NodeJS层的Redis命令似乎没有做我想让它们做的事情。

下面是处理用户输入的NodeJS控制器:

代码语言:javascript
复制
var Config = require(global.appRoot + '/Config.js');
var redisClient = require('../lib/redisConnection');

function Storage() {
    this.__objectName = 'Storage';
}

Storage.prototype.storeTerm = function(req, res, next) {
    var word = req.body.word;
    var newWord = req.body.newWord;
    var hashToStore = {
        word:  newWord
    };
    redisClient.hmset(['words', word], function(err, reply) {
        if(err) {
            res.json('Error:' + err);
        } else {
            res.json(reply);
        }
    });
};

module.exports = Storage;

如你所见,用户输入从Angular2 http调用发送到此函数,然后解析后的值,放入对象hashToStore中,然后我尝试将其保存在一个名为'words‘的散列中。这似乎不起作用,我不确定如何实现10限制功能。

有没有人能告诉我这是对的,或者我哪里错了?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-02-23 21:00:44

我认为你应该使用rpush命令而不是hmset。插入后,rpush返回列表的长度,因此您可以使用lpop轻松应用10项限制

代码语言:javascript
复制
redisClient.rpush('your_list_name', newWord, function(err, reply) {
    if(err) {
        res.json('Error:' + err);
    } else {
        if(reply > 10) {
            redisClient.lpop('your_list_name');
        }
        res.json({status: "ok"}); // send some kinde of status
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42416235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档