使用Node.js和Redis执行CRUD操作

时间:2020-07-20 15:01:38

标签: html node.js redis

我正在寻找一种从节点应用程序连接到Redis数据库并执行插入和显示操作的方法。

要求-

  1. 从UI文本框中,将键值插入redis DB
  2. 在UI(文本框或表格)上显示键值

我正在寻找一个简单的Node.js程序来实现相同目的。到目前为止,我还没有任何代码。只是想了解app.js部分。

app.js

router.post('/route1', function(req, res)
{ 
    
    keyname= req.body.keyname;
    valuename= req.body.valuename;
    console.log(keyname);
    console.log(valuename);
    
    client.set(keyname, valuename, function(err, reply) {
        console.log(reply);
    });

    var redisValues = [];
    client.keys('*', function (err, keys) {
        if (err) return console.log(err);
        if (keys) {
            async.map(keys, function (key, cb) {
                client.get(key, function (error, value) {
                    if (error) return cb(error);
                    var redisObj = {};
                    redisObj[key] = value;
                    redisValues.push(redisObj);
                    console.log(redisValues);
                    res.json({result1:redisValues});
                });
            });
        }
    });
});

我收到以下错误,表示多次发送响应。

错误:

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

1 个答案:

答案 0 :(得分:1)

首先使用以下命令通过npm安装 node_redis

npm install redis

现在使用app.js中的以下代码从Node.js连接Redis。

var redis = require('redis');
var client = redis.createClient(); //creates a new client

默认情况下,redis.createClient()将使用 127.0.0.1 6379 作为 主机名和端口。如果您有其他主机/端口,则您 可以提供它们如下:

var client = redis.createClient(port, host);

存储键值对

所有Redis命令在客户端对象上以不同的功能公开。要存储一个简单的字符串,请使用以下语法:

client.set('framework', 'AngularJS');

操作完成后,您还可以传递可选的回调以获取通知:

client.set('framework', 'AngularJS', function(err, reply) {
  console.log(reply);
});

如果由于某种原因操作失败,则回调的err参数表示错误。要检索键的值,请执行以下操作:

client.get('framework', function(err, reply) {
    console.log(reply);
});

client.get()使您可以检索Redis中存储的密钥。可以通过回调参数Reply访问键的值。如果密钥不存在,则reply的值为空。

使用以下命令,您将获得所有键,但没有值:

client.keys('*', function (err, keys) {
  if (err) return console.log(err);

  for(var i = 0, len = keys.length; i < len; i++) {
    console.log(keys[i]);
  }
}); 

您可以使用以下方法获取redis键和值:-

var redisValues = [];
    client.keys('*', function (err, keys) {
        if (err) return console.log(err);
        if (keys) {
            async.map(keys, function (key, cb) {
                client.get(key, function (error, value) {
                    if (error) return cb(error);
                    var redisObj = {};
                    redisObj[key] = value;
                    redisValues.push(redisObj);
                });
            });
        }
    });
相关问题