如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

苏南大叔刚刚给大家讲解了nodejs的初级使用,那么今天的话题就稍稍进阶一下,说说nodejs对redis的hash集合的操作方法。

函数说明

redis对集合的操作,相对普通的getset操作来说,有些复杂。他主要有下面的一些函数:hset,hget,hgetall,hmset,hkeys。 对,这些函数都是以h开头的,对应的就是hash的意思哦。那么请具体查看下面的demo。

var redis = require('redis');
var client = redis.createClient("6379","127.0.0.1",{auth_pass: "yoursecret"});
client.on("error", function (err) {
    console.log("redis client连接失败",err);
});
client.on('ready', function (res) {
    console.log('client ready');
});
client.on('connect', function () {
    client.hset("hash key", "field 1", "v1", redis.print);
    client.hset(["hash key", "field 2", "v2"], redis.print);
    client.hget("hash key", "field 1", redis.print);
    client.hgetall("hash key",function (err, items) {
        console.log(err,items);
    });
    client.hmset("hash key 2", "field3", "3", "field4", "4");
    client.hgetall("hash key 2", function (err, obj) {
        console.log("hgetall:",obj);
    });
    client.hmset("hash key 3", {
        "012345": "abcdefghij", // NOTE: key and value will be coerced to strings
        "field5": "5"
    });
    client.hgetall("hash key 3", function (err, obj) {
        console.log("hgetall:",obj);
    });
    client.hkeys("hash key", function (err, replies) {
        console.log("hkeys:",err,replies);
        replies.forEach(function (reply, i) {
            console.log("    " + i + ": " + reply);
        });
    });
    //client.quit();
});
client.on("error", function (err) {
    console.log("Error " + err);
});

运行结果

运行结果如下:

nodejs 如何操作 redis 的 hash 集合? - 010
nodejs 如何操作 redis 的 hash 集合?(图9-1)

nodejs 如何操作 redis 的 hash 集合? - 011
nodejs 如何操作 redis 的 hash 集合?(图9-2)

nodejs 如何操作 redis 的 hash 集合? - 012
nodejs 如何操作 redis 的 hash 集合?(图9-3)

nodejs 如何操作 redis 的 hash 集合? - 013
nodejs 如何操作 redis 的 hash 集合?(图9-4)

这个例子,我们可以看到,hset和hmset都可以赋值给一个hash集合,而hget可以取得某个集合中的某个filed,hgetall则可以取得某个集合内的所有值,hkeys,就是取得hash里面的key(field)。

情景复现

我们在命令行redis-cli里面,再加深一下印象。

nodejs 如何操作 redis 的 hash 集合? - 014
nodejs 如何操作 redis 的 hash 集合?(图9-5)

nodejs 如何操作 redis 的 hash 集合? - 015
nodejs 如何操作 redis 的 hash 集合?(图9-6)

nodejs 如何操作 redis 的 hash 集合? - 016
nodejs 如何操作 redis 的 hash 集合?(图9-7)

nodejs 如何操作 redis 的 hash 集合? - 017
nodejs 如何操作 redis 的 hash 集合?(图9-8)

在对比中,我们可以看到hmset的参数必须是基数个,因为第一个参数是hash的名字,后面的是key和val成对出现。而hgetall和hkeys的区别在于,hgetall不但返回key,还返回val,而hkeys仅仅返回key。而想象中的仅仅返回value的hvalue或者hvalues是不存在的哦。

nodejs 如何操作 redis 的 hash 集合? - 018
nodejs 如何操作 redis 的 hash 集合?(图9-9)

这些就是hash集合的基本redis操作,其中key以及filed的概念较为混乱,redis-cli和redis-desktop里面关于这个的概念,似乎有些冲突,不过大家看看,明白就行了。

结语

欢迎大家关注苏南大叔的redis相关文章: https://newsn.net/tag/redis/
更多关于redis的npm包的使用问题,可以点击这里查看: https://npm.js.cn/package/redis

 【源码】代码片段及相关软件点此获取

 【js】秘籍文章入口,仅传授于有缘之人   js    redis

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!