在Node.js应用中读写Redis数据库的简单方法


Posted in Javascript onJune 30, 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 相关文章推荐
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
Apr 17 Javascript
使用PHP+JQuery+Ajax分页的实现
Apr 23 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
Oct 22 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
Dec 25 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
Jul 20 Javascript
老生常谈JS中的继承及实现代码
Jul 06 Javascript
Javascript中绑定click事件的四种方式介绍
Oct 26 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
Jul 24 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 Javascript
全面解析js中的原型,原型对象,原型链
Jan 25 Javascript
javascript日期计算实例分析
Jun 29 #Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 #Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 #Javascript
JavaScript实现级联菜单的方法
Jun 29 #Javascript
node.js读取文件到字符串的方法
Jun 29 #Javascript
JavaScript模拟实现键盘打字效果
Jun 29 #Javascript
JavaScript实现把数字转换成中文
Jun 29 #Javascript
You might like
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
js回文数的4种判断方法示例
2019/06/04 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python tornado微信开发入门代码
2018/08/24 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
在python中pandas的series合并方法
2018/11/12 Python
Python实现网站表单提交和模板
2019/01/15 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
什么是TCP/IP
2014/07/27 面试题
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
创业计划书的写作技巧及要点
2014/01/31 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书