在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 select的操作实现代码
May 06 Javascript
jquery scroll()区分横向纵向滚动条的方法
Apr 04 Javascript
js函数与php函数的区别实例浅析
Jan 12 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
Aug 11 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
Aug 22 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
Aug 25 Javascript
易操作的jQuery表单提示插件
Dec 01 Javascript
如何解决hover在ie6中的兼容性问题
Dec 15 Javascript
VueJs组件之父子通讯的方式
May 06 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
Jul 27 Javascript
angular4笔记系列之内置指令小结
Nov 09 Javascript
JavaScript回调函数callback用法解析
Jan 14 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
快速入门Vue
2016/12/19 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python版名片管理系统
2018/11/30 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
pycharm配置git(图文教程)
2019/08/16 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
什么是Python中的顺序表
2020/06/02 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
优秀班干部主要事迹材料
2015/11/04 职场文书
2016年主题党日活动总结
2016/04/05 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
Vue的过滤器你真了解吗
2022/02/24 Vue.js
2022漫威和DC电影上映作品
2022/04/05 欧美动漫
Golang jwt身份认证
2022/04/20 Golang