更新Redis客户端哈希表

4

我希望更新和添加一个项目到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/


我在想如果我想要向这个哈希表中添加内容,我是否可以只需使用新数据调用client.hmset函数,它就会添加到现有的会话哈希表中?但是更新呢? - Ethan Richardson
是的,您可以根据一个或多个字段使用hset/hmset。请参见此处添加的示例。 - jerry
2个回答

12

您可以根据需要添加或更新的数量使用相同的hmset / hset

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:mongo,并希望更新node:Express4,那么你只需要使用

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

将为关键框架添加数据库并更新节点


我会尝试这个并在明天留下反馈。非常感谢Jerry和@Dario。 - Ethan Richardson
我该如何从哈希表中获取单个元素? - Ethan Richardson
你可以使用"hget keyName member name"。例如:client.hget('frameworks', 'node', function(err, res){}) - jerry

4

是的,如果哈希中的keyfield已经存在,则会进行覆盖。

因此,要添加或更新一个字段,可以使用hset,或者如果您想插入/更新多个字段,则可以使用hmset

如果您想用新的哈希表完全覆盖先前的值,请使用client.multi()并结合使用delhmset命令,在事务中执行它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接