文档章节

记nodejs之rerdis的初次体验

姚棉伟apt-get
 姚棉伟apt-get
发布于 2016/09/08 00:32
字数 463
阅读 46
收藏 0

接触nodejs时间不长,想着用nodejs写一下redis基本数据结构的操作,于是写下如下代码:

redisDatabase = {
    setKeyValue:setKeyValueFunc,
    getValueByKey:getValueByKeyFUnc,
    // listLeftPsuh:listLeftPsuhFunc,
    // listRighttPsuh:listRighttPsuhFUnc,
    // listLeftPop:listLeftPopFunc,
}

function consoleInfo(err, result){
    console.log('err: ' + err + ' ' + 'result: ' + result);
}

function setKeyValueFunc(key, value, cbFunc){
    client.set(key,value,function(err, value){
        if(err){
            cbFunc(err, null);
            return 'failed';
        }else{
            cbFunc(null,value);
            return value;
        }
    });
}

function getValueByKeyFUnc(key, cbFunc){
    client.get(key, function(err, value){
        if(err){
            cbFunc(err,null);
            return 'failed'
        }else{
            cbFunc(null,value);
            return value;
        }
    });
}

var ret = redisDatabase.setKeyValue('sanguo','luoguanzhong',consoleInfo);
console.log('插入sanguo返回的结果是: ' + ret);
ret = redisDatabase.getValueByKey('nihao', consoleInfo);
console.log('获取nihao返回的结果是:' + ret);

以下是其运行结果:

插入sanguo返回的结果是: undefined
获取nihao返回的结果是:undefined
err: null result: OK
err: null result: null

可见nodejs在对redis请求redisDatabase.setKeyValue操作的时候,并不是等待redis返回结果再执行console.log('插入sanguo返回的结果是: ' + ret)语句;而是采用事件回调机制(我猜想,待论证),先往下执行了console.log('插入sanguo返回的结果是: ' + ret)语句,此时ret定没有初始值,因此是undefined,在进行redisDatabase.getValueByKey操作的时候也是同样的道理。而后,redis返回数据,触发setKeyValue事件,执行了client.set的回调函数打印了err: null result: OK信息。看来,这正是nodejs的强大之处!这种处理大大减少了处理的逻辑,以及提高了运行的效率。于是代码做了一下的改变

redisDatabase = {
    setKeyValue:setKeyValueFunc,
    getValueByKey:getValueByKeyFUnc,
    // listLeftPsuh:listLeftPsuhFunc,
    // listRighttPsuh:listRighttPsuhFUnc,
    // listLeftPop:listLeftPopFunc,
}

function consoleInfo(err, result){
    console.log('err: ' + err + ' ' + 'result: ' + result);
}

function setKeyValueFunc(key, value, cbFunc){
    client.set(key,value,function(err, value){
        if(err){
            //处理失败情况的逻辑
            cbFunc(err, null);
        }else{
            //处理成功的逻辑
            cbFunc(null,value);
        }
    });
}

function getValueByKeyFUnc(key, cbFunc){
    client.get(key, function(err, value){
        if(err){
            //处理失败情况的逻辑
            cbFunc(err, null);
        }else{
            //处理成功的逻辑
            cbFunc(null,value);
        }
    });
}

redisDatabase.setKeyValue('sanguo','luoguanzhong',consoleInfo);
redisDatabase.getValueByKey('nihao', consoleInfo);

以此做记录,表示由此入门!

© 著作权归作者所有

姚棉伟apt-get
粉丝 0
博文 21
码字总数 13064
作品 0
深圳
私信 提问
开发笔记13 | 部署 Node.js 应用程序到云 ECS

前言 在之前的一篇文章中,我们介绍了 如何将一个本地的 Java 应用程序直接部署到阿里云 ECS ,有不少读者反馈,在本文中,我们来介绍如何部署 Node.js 应用程序到阿里云 ECS。 本地开发 本文...

银时
2018/11/12
0
0
Deno下一代Nodejs?Deno初体验

前言 Ryan Dahl之父发布了新的项目Deno,很多IT媒体都使用了标题“下一代Nodejs”,首先我们看一下Deno的特性: 1.支持typescript (nodejs目前也支持)。 2.无package.json,无npm,不兼容nod...

peiyu1988
2018/08/12
0
0
新手提问 - Node.js安装express报错怎么破?

各位大神好,小生初次接触node.js这样的新鲜玩意儿,抱着好学的心理,寻找了一些安装指导的帖子,照着步骤一步一步来。 操作系统:64位WIN7 。 去node.js的官网下载了对应的MSI一路默认安装,...

水到一比
2014/08/07
1K
4
用NAN写一个nodejs的c++扩展

NAN介绍 NAN的全称为Native Abstraction for Node.js, 其表现上是一个Node.js包。安装后,就得到一堆C++头文件,里面是一堆宏。它主要为Node.js和V8跨版本提供了封装的宏,使得开发者不用关心...

warjiang
01/06
0
0
基于Electron + nodejs + 小程序 实现弹幕小工具(终篇)

前言 首先说明一下,本文无干货,不喜勿喷。 本文是弹幕小工具系列的最后一篇文章,主要是做一下归档和总结。 本系列,我们从零开始实现一个简单可用的弹幕小工具,目前已部署在线上环境,有...

黑金团队
2018/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python应用:python链表示例

前言 python链表应用源码示例,需要用到python os模块方法、函数和类的应用。 首先,先简单的来了解下什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是...

python小白1
34分钟前
2
0
Source Insight加载源码

Source Insight是一个图形化的源代码查看工具(当然也可以作为编译工具)。如果一个项目的源代码较多,此工具可以很方便地查找到源代码自建的依赖关系。 1.创建工程 下图为Snort源代码的文件...

天王盖地虎626
36分钟前
0
0
nginx-rtmp-module的缺陷分析(二)

nginx-rtmp-module使用指令push和pull来relay媒体流数据,以便分布式部署服务。 当nginx-rtmp-module作为边缘服务器(一般不会向边缘服务器推流)时,使用pull从源服务器获取媒体流数据,俗称...

YoungSagit
36分钟前
0
0
代理模式

保护代理和虚拟代理 虚拟代理 把开销大的操作等到需要执行创建的时候再去执行创建 var myImage = +function () { var imgNode = document.createElement('img'); docume......

莫西摩西
44分钟前
2
0
从国企到互联网,程序员六年四段工作经历,一份被很多 HR都 刷掉的简历!

程序员,六年,四段工作经历,这也许是一份会被很多 HR 刷掉的简历。 从学生时代至今,我经历了两次大的方向转型和一次大的技术转型: 从偏理论推导的数学科学到重工程实践的计算机学科,从「...

我最喜欢三大框架
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部