更新redis客户端哈希

时间:2016-08-05 13:55:29

标签: node.js hash 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'
});

有没有办法添加到这个哈希?我想更改并更新现有的哈希元素。

如果不读取所有内容并使用updated和new元素创建新哈希,这是否可行。

我正在使用此网页作为教程指南:https://www.sitepoint.com/using-redis-node-js/

2 个答案:

答案 0 :(得分:7)

您可以根据要添加或更新的数量使用相同的 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,并想要更新节点:Express4然后你可以使用

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

将添加db&关键框架也更新节点

答案 1 :(得分:1)

是的,如果散列中已存在key或散列field,则会覆盖它们。

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

如果要覆盖整个哈希值而丢弃以前的值,可以使用client.multi()并使用delhmset命令的组合来执行它们。事务。