在Node.js应用中使用Redis的方法简介


Posted in Javascript onJune 24, 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 相关文章推荐
flash 得到自身url参数的代码
Nov 15 Javascript
JavaScript对象学习经验整理
Oct 12 Javascript
纯js写的分页表格数据为json串
Feb 18 Javascript
jquery中子元素和后代元素的区别示例介绍
Apr 02 Javascript
详解Webwork中Action 调用的方法
Feb 02 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
Nov 25 Javascript
vue双向绑定简要分析
Mar 23 Javascript
JavaScript实现简单评论功能
Aug 17 Javascript
vue的全局变量和全局拦截请求器的示例代码
Sep 13 Javascript
bootstrap tooltips在 angularJS中的使用方法
Apr 10 Javascript
layui使用数据表格实现购物车功能
Jul 26 Javascript
基于javascript的无缝滚动动画实现2
Aug 07 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
Jun 24 #Javascript
浅析Node.js中的内存泄漏问题
Jun 23 #Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 #Javascript
Node.js编程中客户端Session的使用详解
Jun 23 #Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 #Javascript
使用Node.js为其他程序编写扩展的基本方法
Jun 23 #Javascript
Windows系统下Node.js的简单入门教程
Jun 23 #Javascript
You might like
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
js 上传图片预览问题
2010/12/06 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
js实现车辆管理系统
2020/08/26 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python修改注册表终止360进程实例
2014/10/13 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
Python学习笔记之装饰器
2020/08/06 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
科技之星事迹材料
2014/06/02 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
廉政承诺书范文
2015/04/28 职场文书
个人售房合同协议书
2016/03/21 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL