在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 相关文章推荐
有关DOM元素与事件的3个谜题
Nov 11 Javascript
Javascript基础教程之switch语句
Jan 18 Javascript
探讨AngularJs中ui.route的简单应用
Nov 16 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
Feb 08 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
Apr 22 Javascript
详解node HTTP请求客户端 - Request
May 05 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
May 17 Javascript
基于vue的换肤功能的示例代码
Oct 10 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
js实现图片放大并跟随鼠标移动特效
Jan 18 Javascript
vue路由结构可设一层方便动态添加路由操作
Aug 31 Javascript
JS实现点击掉落特效
Jan 29 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使用curl模拟登录后采集页面的例子
2013/11/04 PHP
php学习笔记之基础知识
2014/11/08 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
python中的多重继承实例讲解
2014/09/28 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
YUV转为jpg图像的实现
2019/12/09 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
django中ImageField的使用详解
2020/12/21 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
简历中自我评价怎么写
2014/02/12 职场文书
社区平安建设方案
2014/05/25 职场文书
交通事故协议书范本
2014/11/18 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书