2016-08-05 86 views
1

我想更新并添加项目到redis散列会话条目。更新redis客户端散列

我已经能够创建一个具有使用Redis的客户端使用下面的代码:

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

client.on('connect', function() { 
    console.log('connected'); 
}); 

client.hmset('frameworks', { 
    'javascript': 'AngularJS', 
    'css': 'Bootstrap', 
    'node': 'Express' 
}); 

有没有加入到这个散列的一种方式?我想更改并更新现有的散列元素。

这可能没有阅读所有内容,并创建一个新的哈希与更新和新的元素。

我使用这个网页上作为教程指南:https://www.sitepoint.com/using-redis-node-js/

+0

我想如果IW anted添加到这个散列我可以用新数据调用client.hmset,它会添加到现有的会话散列?但是更新呢? – user1907509

+0

是的,您可以使用基于一个或多个字段的hset/hmset ..请参阅此处添加的示例 – jerry

回答

7

您可以使用相同的hmset /置角根据你要多少添加或更新

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

client.on('connect', function() { 
    console.log('connected'); 
}); 

client.hmset('frameworks', { 
    'javascript': 'AngularJS', 
    'css': 'Bootstrap', 
    'node': 'Express' 
}); 

说你一开始有这个,想添加DB:蒙戈,并希望更新节点:Express4那么你可以只用

//If you know will update only one use hset instead 
client.hmset('frameworks', { 
    'node': 'Express4', 
    'db' : 'MongoDB' 
}); 

会增加分贝&更新节点太为重点框架

+0

明天我会尝试此操作并留下反馈。非常感谢杰里和@达里奥 – user1907509

+0

我将如何从散列表中获取单个元素? – user1907509

+0

您可以使用“hget keyName成员名称”。 EX:client.hget('frameworks','node',function(err,res){}) – jerry

1

是的,如果key或哈希field在散列已经存在,它们将被覆盖。

因此,要添加或更新一个字段,您可以使用hsethmset如果要插入/插入多个字段。

如果您希望覆盖整个散列,并丢弃以前的值,可以使用client.multi()并使用delhmset命令的组合在事务中执行它们。