nodejs 如何操作 redis 的 hash 集合?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
苏南大叔刚刚给大家讲解了nodejs的初级使用,那么今天的话题就稍稍进阶一下,说说nodejs对redis的hash集合的操作方法。
函数说明
redis
对集合的操作,相对普通的get
和set
操作来说,有些复杂。他主要有下面的一些函数: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);
});
运行结果
运行结果如下:
这个例子,我们可以看到,hset和hmset都可以赋值给一个hash集合,而hget可以取得某个集合中的某个filed,hgetall则可以取得某个集合内的所有值,hkeys,就是取得hash里面的key(field)。
情景复现
我们在命令行redis-cli里面,再加深一下印象。
在对比中,我们可以看到hmset的参数必须是基数个,因为第一个参数是hash的名字,后面的是key和val成对出现。而hgetall和hkeys的区别在于,hgetall不但返回key,还返回val,而hkeys仅仅返回key。而想象中的仅仅返回value的hvalue或者hvalues是不存在的哦。
这些就是hash集合的基本redis操作,其中key以及filed的概念较为混乱,redis-cli和redis-desktop里面关于这个的概念,似乎有些冲突,不过大家看看,明白就行了。
结语
欢迎大家关注苏南大叔的redis相关文章: https://newsn.net/tag/redis/ 。
更多关于redis的npm包的使用问题,可以点击这里查看: https://npm.js.cn/package/redis 。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。