在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 相关文章推荐
理解Javascript_02_理解undefined和null
Oct 11 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
Jun 24 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
Sep 16 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
Mar 11 Javascript
老生常谈JavaScript数组的用法
Jun 10 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
Feb 14 Javascript
深入解析js轮播插件核心代码的实现过程
Apr 14 Javascript
详解如何在Angular优雅编写HTTP请求
Dec 05 Javascript
Vue使用axios出现options请求方法
May 30 Javascript
django js 实现表格动态标序号的实例代码
Jul 12 Javascript
基于javascript实现贪吃蛇经典小游戏
Apr 10 Javascript
微信小程序APP页面的之间的相互传递参数以及自定义组件
Apr 19 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表单提交问题的解决方法
2011/04/12 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
2015/08/24 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
Python创建文件和追加文件内容实例
2014/10/21 Python
python中while循环语句用法简单实例
2015/05/07 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
提升Python程序性能的7个习惯
2019/04/14 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
Django models.py应用实现过程详解
2019/07/29 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
本科生求职信
2014/06/17 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
学困生转化工作总结
2015/08/13 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
python通过新建环境安装tfx的问题
2022/05/20 Python
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript