在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 相关文章推荐
jQuery 表单验证扩展(三)
Oct 20 Javascript
运算符&&的三个不同层次
Apr 07 Javascript
js动态生成指定行数的表格
Jul 11 Javascript
Js保留小数点的4种效果实现代码分享
Apr 12 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
webpack 4.0.0-beta.0版本新特性介绍
Feb 10 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
vue-cli的工程模板与构建工具详解
Sep 27 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
Mar 29 Javascript
微信小程序之数据绑定原理解析
Aug 14 Javascript
小程序实现日历左右滑动效果
Oct 21 Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 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入门速成(2)
2006/10/09 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
javascript知识点收藏
2007/02/22 Javascript
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
PHP守护进程实例
2015/03/06 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
python在linux中输出带颜色的文字的方法
2014/06/19 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
Python 3 判断2个字典相同
2019/08/06 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
福克斯租车:Fox Rent A Car
2017/04/13 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
大学三年的自我评价
2013/12/25 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
2014年团支部工作总结
2014/11/17 职场文书
运动会致辞稿
2015/07/29 职场文书
Nginx配置https的实现
2021/11/27 Servers
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA