在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 相关文章推荐
神奇的7个jQuery 3D插件整理
Jan 06 Javascript
Jquery异步请求数据实例代码
Dec 28 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
Feb 27 Javascript
document.createElement()用法
Mar 13 Javascript
jquery给图片添加鼠标经过时的边框效果
Nov 12 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
Dec 28 Javascript
jQuery三级下拉列表导航菜单代码分享
Apr 15 Javascript
浅谈ES6新增的数组方法和对象
Aug 08 Javascript
基于vue的短信验证码倒计时demo
Sep 13 Javascript
快速解决brew安装特定版本flow的问题
May 17 Javascript
JS实现动态生成html table表格的方法分析
Jul 11 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
Nov 10 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
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
如何设置mysql允许外网访问
2013/06/04 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
php上传图片类及用法示例
2016/05/11 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
django之跨表查询及添加记录的示例代码
2018/10/16 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
Django之路由层的实现
2019/09/09 Python
利用python画出AUC曲线的实例
2020/02/28 Python
学习python需要有编程基础吗
2020/06/02 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
Lookfantastic俄罗斯:欧洲在线化妆品零售商
2019/08/06 全球购物
博士学位自我鉴定范文
2013/12/26 职场文书
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
护士岗位职责
2014/02/16 职场文书
运动会口号16字
2014/06/07 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
监护人证明
2015/06/19 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书