在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 相关文章推荐
js面向对象设计用{}好还是function(){}好(构造函数)
Oct 23 Javascript
jQuery实现可收缩展开的级联菜单实例代码
Nov 27 Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 Javascript
学习JavaScript设计模式之装饰者模式
Jan 19 Javascript
angular 用拦截器统一处理http请求和响应的方法
Jun 08 Javascript
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
vue + typescript + 极验登录验证的实现方法
Jun 27 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
JavaScript观察者模式原理与用法实例详解
Mar 10 Javascript
vuex刷新后数据丢失的解决方法
Oct 18 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
B2K与车机的中波PK
2021/03/02 无线电
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
php预定义常量
2006/12/25 PHP
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
PHP页面间传递参数实例代码
2008/06/05 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
vue实现记事本功能
2019/06/26 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
Python函数嵌套实例
2014/09/23 Python
在Python中使用Neo4j数据库的教程
2015/04/16 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
python查看列的唯一值方法
2018/07/17 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
python的等深分箱实例
2019/11/22 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
解决Django no such table: django_session的问题
2020/04/07 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
财务担保书范文
2014/04/02 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
特岗教师个人总结
2015/02/10 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android