在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 相关文章推荐
在jQuery1.5中使用deferred对象 着放大镜看Promise
Mar 12 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
Apr 12 Javascript
JS性能优化笔记搜索整理
Aug 21 Javascript
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
Javascript进制转换实例分析
May 14 Javascript
jQuery实现大图轮播
Feb 13 Javascript
原生JS+Canvas实现五子棋游戏实例
Jun 19 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 jQuery
详解基于webpack&gettext的前端多语言方案
Jan 29 Javascript
vue实现购物车小案例
Sep 27 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
Jul 17 Javascript
JS代码编译器Monaco使用方法
Jun 11 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
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
PHP手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
帝国cms目录结构分享
2015/07/06 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
JavaScript内存管理介绍
2015/03/13 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
python可视化实现代码
2019/01/15 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
租房协议书怎么写
2014/04/10 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
2014年教师工作总结
2014/11/10 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
小学运动会宣传稿
2015/07/23 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS