在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 相关文章推荐
javascript编程起步(第七课)
Feb 27 Javascript
Apply an AutoFormat to an Excel Spreadsheet
Jun 12 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
Apr 24 Javascript
jquery及原生js获取select下拉框选中的值示例
Oct 25 Javascript
深入理解Java线程编程中的阻塞队列容器
Dec 07 Javascript
js滑动提示效果代码分享
Mar 10 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
Apr 25 Javascript
详解微信小程序开发之城市选择器 城市切换
Jan 17 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
Feb 02 Javascript
ES6基础之解构赋值(destructuring assignment)
Feb 21 Javascript
vue打包npm run build时候界面报错的解决
Aug 13 Javascript
Vue3为什么这么快
Sep 23 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
用PHP动态创建Flash动画
2006/10/09 PHP
PHP 多进程 解决难题
2009/06/22 PHP
php类常量的使用详解
2013/06/08 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
javascript网页关键字高亮代码
2008/07/30 Javascript
页面中js执行顺序
2009/11/09 Javascript
validator验证控件使用代码
2010/11/23 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python中的pass语句使用方法讲解
2015/05/14 Python
Django实现图片文字同时提交的方法
2015/05/26 Python
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
Python实现单词翻译功能
2017/06/06 Python
Python探索之修改Python搜索路径
2017/10/25 Python
python最长回文串算法
2018/06/04 Python
python字典与json转换的方法总结
2020/12/28 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
蒂娜商店:Tiina the Store
2019/12/07 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
应届生财务会计求职信
2013/11/05 职场文书
精彩的大学生自我评价
2013/11/17 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
研修心得体会
2014/09/04 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
委托书格式要求
2015/01/28 职场文书
律师催款函范文
2015/06/24 职场文书
2016党员入党决心书
2015/09/22 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
vue修饰符.capture和.self的区别
2022/04/22 Vue.js