使用 node 实现 redis 时,如何将多个 json 对象添加到 Hmset 或 hset 或任何数据类型



例如>

var redis = require('redis');    
var port=6379;    
var host="127.0.0.1";    
var redisClient=null;
redisClient = redis.createClient(port, host);
redisClient.on('connect',function(err,reply){
    if(err)
        {
            console.log("Erro with connectivity");
        }
    else
        {
            console.log("connected with redis");     
        }
  });

数据变量是多个 JSON 对象

 redisClient.hset('users',data);
    redisClient.hgetall('users',function(err,object){
   if(err) 
       {
           console.log("Getting Hmset Error");
       }
    else
        {
            console.log("----Retrieving HMSET--");
            console.log(object);
            console.log("---End Retriving HMSET");
        }
});

但是JSON不是以完美的方式添加的。

给出这样的结果。

data= { javascript: 'AngularJS',
  css: 'Bootstrap',
  users: '[object Object]',
  node: 'Express',
  '[object Object]': '[object Object]' }

序列化您的数据,例如 redisClient.hset ('users', JSON.stringify (data));

Redis 处理字符串,您需要将 JSON(实际上是 JavaScript 对象)转换为 JSON 字符串:

redisClient.hset('users', JSON.stringify(data));

然后,当您获取该 JSON 字符串时,您必须将该 JSON 字符串解析回 JavaScript 对象:

redisClient.hget('users', function (err, str) {
    if (err) return console.error(err);
    var data = JSON.parse(str); // note this might throw an exception
});

需要注意的一点是,您不会将回调传递到 hset 方法中,这意味着它不能保证在您调用 hget 时已完成。您也应该考虑解决此问题。

Redis 使用此数据类型以操作您必须在字符串中转换的 JSON

redisClient.hset('users', JSON.stringify(data));
strings — a sequence of binary safe bytes up to 512 MB.
hashes — a collection of key value pairs.
lists — an in-insertion-order collection of strings.
sets — a collection of unique strings with no ordering.
sorted sets — a collection 

最新更新