在Node.js应用中读写Redis数据库的简单方法


Posted in Javascript onJune 30, 2015

 在开始本文之前请确保安装好 Redis 和 Node.js 以及 Node.js 的 Redis 扩展 —— node_redis

首先创建一个新文件夹并新建文本文件 app.js 文件内容如下:
 

var redis = require("redis")
  , client = redis.createClient();
 
client.on("error", function (err) {
  console.log("Error " + err);
});
 
client.on("connect", runSample);
 
function runSample() {
  // Set a value
  client.set("string key", "Hello World", function (err, reply) {
    console.log(reply.toString());
  });
  // Get a value
  client.get("string key", function (err, reply) {
    console.log(reply.toString());
  });
}

当连接到 Redis 后会调用 runSample 函数并设置一个值,紧接着便读出该值,运行的结果如下:
 

OK
Hello World

我们也可以使用 EXPIRE 命令来设置对象的失效时间,代码如下:
 

var redis = require('redis')
  , client = redis.createClient();
 
client.on('error', function (err) {
  console.log('Error ' + err);
});
 
client.on('connect', runSample);
 
function runSample() {
  // Set a value with an expiration
  client.set('string key', 'Hello World', redis.print);
  // Expire in 3 seconds
  client.expire('string key', 3);
 
  // This timer is only to demo the TTL
  // Runs every second until the timeout
  // occurs on the value
  var myTimer = setInterval(function() {
    client.get('string key', function (err, reply) {
      if(reply) {
        console.log('I live: ' + reply.toString());
      } else {
        clearTimeout(myTimer);
        console.log('I expired');
        client.quit();
      }
    });
  }, 1000);
}

注意: 上述使用的定时器只是为了演示 EXPIRE 命令,你必须在 Node.js 项目中谨慎使用定时器。

运行上述程序的输出结果是:

 

Reply: OK
I live: Hello World
I live: Hello World
I live: Hello World
I expired

接下来我们检查一个值在失效之前存留了多长时间:
 

var redis = require('redis')
  , client = redis.createClient();
 
client.on('error', function (err) {
  console.log('Error ' + err);
});
 
client.on('connect', runSample);
 
function runSample() {
  // Set a value
  client.set('string key', 'Hello World', redis.print);
  // Expire in 3 seconds
  client.expire('string key', 3);
 
  // This timer is only to demo the TTL
  // Runs every second until the timeout
  // occurs on the value
  var myTimer = setInterval(function() {
    client.get('string key', function (err, reply) {
      if(reply) {
        console.log('I live: ' + reply.toString());
        client.ttl('string key', writeTTL);
      } else {
        clearTimeout(myTimer);
        console.log('I expired');
        client.quit();
      }
    });
  }, 1000);
}
 
function writeTTL(err, data) {
  console.log('I live for this long yet: ' + data);
}

运行结果:
 

Reply: OK
I live: Hello World
I live for this long yet: 2
I live: Hello World
I live for this long yet: 1
I live: Hello World
I live for this long yet: 0
I expired

 
Javascript 相关文章推荐
jQuery实用函数用法总结
Aug 29 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
jquery操作复选框checkbox的方法汇总
Feb 05 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
Jun 01 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
Feb 16 Javascript
使用jQuery实现动态添加小广告
Jul 11 jQuery
Angular4实现鼠标悬停3d倾斜效果
Oct 25 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
Nov 29 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
JS实现选项卡效果的代码实例
May 20 Javascript
微信小程序input抖动问题的修复方法
Mar 03 Javascript
javascript日期计算实例分析
Jun 29 #Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 #Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 #Javascript
JavaScript实现级联菜单的方法
Jun 29 #Javascript
node.js读取文件到字符串的方法
Jun 29 #Javascript
JavaScript模拟实现键盘打字效果
Jun 29 #Javascript
JavaScript实现把数字转换成中文
Jun 29 #Javascript
You might like
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP生成随机密码类分享
2014/06/25 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
浅谈python装饰器探究与参数的领取
2017/12/01 Python
通过Pandas读取大文件的实例
2018/06/07 Python
Python返回数组/List长度的实例
2018/06/23 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
Python底层封装实现方法详解
2020/01/22 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
怎么写好自荐信
2013/10/30 职场文书
考试不及格的检讨书
2014/01/22 职场文书
网络研修随笔感言
2014/02/17 职场文书
公司应聘自荐书
2014/06/14 职场文书
学习十八大演讲稿
2014/09/15 职场文书
建设工程授权委托书
2014/09/22 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
李强为自己工作观后感
2015/06/11 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL