在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 相关文章推荐
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 Javascript
在Mac OS下使用Node.js的简单教程
Jun 24 Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 Javascript
从setTimeout看js函数执行过程
Dec 19 Javascript
JS设计模式之访问者模式定义与用法分析
Feb 05 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
Oct 08 Javascript
vue实现form表单与table表格的数据关联功能示例
Jan 29 Javascript
WebSocket的简单介绍及应用
May 23 Javascript
在vue中把含有html标签转为html渲染页面的实例
Oct 28 Javascript
viewer.js实现图片预览功能
Jun 24 Javascript
基于openlayers实现角度测量功能
Sep 28 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中DOMElement操作xml文档实例演示
2013/03/26 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
javascript与webservice的通信实现代码
2010/12/25 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
一分钟理解js闭包
2016/05/04 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
基于python实现聊天室程序
2018/07/27 Python
python求最大值最小值方法总结
2019/06/25 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
python基于opencv 实现图像时钟
2021/01/04 Python
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
英文自荐信
2013/12/19 职场文书
大学生创业计划书的格式要求
2013/12/29 职场文书
遗产继承公证书
2014/04/09 职场文书
学生自我评语大全
2014/04/18 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
2014年服务员工作总结
2014/11/18 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android