首页 > 语言 > JavaScript > 正文

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

2024-05-06 16:22:31
字体:
来源:转载
供稿:网友

这篇文章主要介绍了在Node.js应用中读写Redis数据库的简单方法,Redis是一个内存式高速数据库,需要的朋友可以参考下

在开始本文之前请确保安装好 Redis 和 Node.js 以及 Node.js 的 Redis 扩展 ——node_redis

首先创建一个新文件夹并新建文本文件 app.js 文件内容如下:

 

 
  1. var redis = require("redis"
  2. , client = redis.createClient(); 
  3.  
  4. client.on("error"function (err) { 
  5. console.log("Error " + err); 
  6. }); 
  7.  
  8. client.on("connect", runSample); 
  9.  
  10. function runSample() { 
  11. // Set a value 
  12. client.set("string key""Hello World"function (err, reply) { 
  13. console.log(reply.toString()); 
  14. }); 
  15. // Get a value 
  16. client.get("string key"function (err, reply) { 
  17. console.log(reply.toString()); 
  18. }); 

当连接到 Redis 后会调用 runSample 函数并设置一个值,紧接着便读出该值,运行的结果如下:

 

 
  1. OK 
  2. Hello World 

我们也可以使用 EXPIRE 命令来设置对象的失效时间,代码如下:

 

 
  1. var redis = require('redis'
  2. , client = redis.createClient(); 
  3.  
  4. client.on('error'function (err) { 
  5. console.log('Error ' + err); 
  6. }); 
  7.  
  8. client.on('connect', runSample); 
  9.  
  10. function runSample() { 
  11. // Set a value with an expiration 
  12. client.set('string key''Hello World', redis.print); 
  13. // Expire in 3 seconds 
  14. client.expire('string key', 3); 
  15.  
  16. // This timer is only to demo the TTL 
  17. // Runs every second until the timeout 
  18. // occurs on the value 
  19. var myTimer = setInterval(function() { 
  20. client.get('string key'function (err, reply) { 
  21. if(reply) { 
  22. console.log('I live: ' + reply.toString()); 
  23. else { 
  24. clearTimeout(myTimer); 
  25. console.log('I expired'); 
  26. client.quit(); 
  27. }); 
  28. }, 1000); 

注意: 上述使用的定时器只是为了演示 EXPIRE 命令,你必须在 Node.js 项目中谨慎使用定时器。

运行上述程序的输出结果是:

 

 
  1. Reply: OK 
  2. I live: Hello World 
  3. I live: Hello World 
  4. I live: Hello World 
  5. I expired 

接下来我们检查一个值在失效之前存留了多长时间:

 

 
  1. var redis = require('redis'
  2. , client = redis.createClient(); 
  3.  
  4. client.on('error'function (err) { 
  5. console.log('Error ' + err); 
  6. }); 
  7.  
  8. client.on('connect', runSample); 
  9.  
  10. function runSample() { 
  11. // Set a value 
  12. client.set('string key''Hello World', redis.print); 
  13. // Expire in 3 seconds 
  14. client.expire('string key', 3); 
  15.  
  16. // This timer is only to demo the TTL 
  17. // Runs every second until the timeout 
  18. // occurs on the value 
  19. var myTimer = setInterval(function() { 
  20. client.get('string key'function (err, reply) { 
  21. if(reply) { 
  22. console.log('I live: ' + reply.toString()); 
  23. client.ttl('string key', writeTTL); 
  24. else { 
  25. clearTimeout(myTimer); 
  26. console.log('I expired'); 
  27. client.quit(); 
  28. }); 
  29. }, 1000); 
  30.  
  31. function writeTTL(err, data) { 
  32. console.log('I live for this long yet: ' + data); 

运行结果:

 

 
  1. Reply: OK 
  2. I live: Hello World 
  3. I live for this long yet: 2 
  4. I live: Hello World 
  5. I live for this long yet: 1 
  6. I live: Hello World 
  7. I live for this long yet: 0 
  8. I expired 
 

 

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选