gpt4 book ai didi

node.js - Redis 与 NodeJS - 创建一组十个项目

转载 作者:可可西里 更新时间:2023-11-01 11:29:10 26 4
gpt4 key购买 nike

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

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

我很难在 Redis 中实现它,我在 NodeJS 层中的 Redis 命令似乎没有按照我希望的方式执行。

这是处理用户输入的 NodeJS Controller :

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 callm 发送到此函数,然后解析值,将其放入对象 hashToStore,然后我试图将其保存在名为“words”的哈希中。这似乎不起作用,我不确定如何实现 10 限制功能。

任何人都可以告诉我这是正确的还是哪里出错了?

谢谢

最佳答案

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

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
}
});

关于node.js - Redis 与 NodeJS - 创建一组十个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com