zoukankan      html  css  js  c++  java
  • Node.JS平台上的数据库Redis,MongoDB,HBASE,MySQL

    一. MongoDB:

        因为10gen是的赞助商之一,所以MongoDB有着良好的Node.JS支持。

        a. 基本支持:,在Node.JS对MongoDB的支持有两种常用的组件mongodb, mongoose.下面分别介绍。

         (1)基于mongodb的支持。这个for Node.JS的驱动是基于事件驱动的,所以用法基本上都是异步回调函方式。下载驱动组件$npm install -gd mongodb

         在testdb.js加入如下代码:     

      var mongodb = require('mongodb');
      var server = new mongodb.Server("127.0.0.1", 27017, {});
      var connection = new mongodb.Db('test', server, {safe:true}).open(function (error, client) {
          if (error) throw error;

                 var collection = client.collection('users');
          var test =collection.find({}, {limit:10}).toArray(function(err, docs) {
             console.dir(docs);
               });

                //insert section
            var doc1 = {id:33,name:'liuyang1'};
          var doc2 = {id:44,name:'liuyang2'};
          collection.insert([doc1,doc2],function(err,result){
                  console.log(result);
               });


               console.log('this is a test result......\n'); 
          });

        (2)基于mongoose的支持。

      下载驱动组件$npm install -gd mongoose

         测试代码如下:

         var mongoose = require('mongoose');
       var conn = mongoose.connect('mongodb://localhost/test');
     
       var db = mongoose.connection;
       db.on('error', console.error.bind(console, 'connection error:'));
         db.once('open', function callback (err) {
           if (!err){console.log('opened');}
         });
     
         var Schema = mongoose.Schema;
     
        var Person = new Schema({
              id   : Number
            , name : { type: String}
           
          });   
     var result = mongoose.model('users', Person);
     var PersonCollection = mongoose.model('users');
     var one = new PersonCollection();
     one.title ="zyq";
     one.age = 38;
     one.save(function(err){
            if(err){
                  console.log('failed!!!!');
            }else{
                  console.log('successful!!!!');
            }// end of if block
     });


     //test find
     PersonCollection.find(function (err, persons){
         if(!err){
          console.log(persons);
         }
     });

       

        b.MongoDB的REST 支持:

        由于MongoDB的BJSON数据存贮模式,天生的对JSON格式数据支持。在些条件下创建的REST支持最方便不过。

      1.-rest启动参数对网页管理的支持:

      2.快速搭建基于Node.JS,支持REST Web Service方式,JSON的格式MongoDB访问平台:

        首先安装mongodb 驱动:$npm install mongodb -gd.

        安装mongodb的rest 组件:$npm install mongodb-rest -gd

        直接运行mongodb-rest.(在运行之前,找到这个组件目录(在nodejs全局模块目录如:/usr/local/nodejs/lib/node_modules/mongodb-rest下,找到config.json.修改其中的mongodb的服务器地址端口为正确的数据,,不然会报unauthorized错误)

       如果说不能运行,且报说createServer错误,就要去修改组件目录下的server.js把其中的var app = module.exports.app = express.createServer();改为var app = module.exports.app = express();

      代码有点老了:)不过用来学习还是不错的。

        此时就可以通过REST web Service方式来访问mongoDB 了,我们可以用curl测试一下:

      $$ curl -d '{ "A1" : 201 }' -H "Content-Tyson" http://localhost:3000/test/example 

     

     

    二,Redis数据库:

       Redis的优缺点及应用场景在这里就不提了,可以查找我的别的日志了解一下。如果用在复杂些的缓存场景,用它是没错的,至少从目前技术角度来看。

     1.安装Redis 数据库。到官网下载安装包。

    http://redis.io/ 这里应该是2.6.10版本了。

    $tar -xzvf redis-2.6.10.tar.gz

    $cd redis-2.6.10

    $make

    $make install

    ok现在你可以用redis自带的客户端来测试了

    先运行Redis 服务器

    $redis-server

    $redis-cli

    >redis 127.0.0.1:6379> set zyq 'is a good man'

    redis 127.0.0.1:6379>get zyq

    显示'is a good man' ok,一切正常

    安装Node.JS的Redis驱动模块:

    $sudo npm install redis -gd

    安装完后可以写代码进行测试了:

    var redis = require("redis");

    var client = redis.createClient();    

    client.on("error", function (err) {     console.log("Error " + err); });

    client.set("skey", "this is string", redis.print);

    client.hset("hashkey", "hashtest a", "abc", redis.print);

    client.hset(["hashkey", "hashtest b", "some otest"], redis.print);

    client.hkeys("hashkey", function (err, replies) {  

      console.log(replies.length + " replies:");    

         replies.forEach(function (reply, i) {

                console.log("    " + i + ": " + reply);

        });

        client.quit();

    });

    三,MySQL数据库

    四,HBase数据库:

    ---待续-----

  • 相关阅读:
    Thinkphp3.2 PHPMailer 发送邮件
    13 代理模式
    12 状态模式
    11 组合模式
    10 迭代器模式
    9 模板方法模式
    8 外观模式
    MySQL Network--Localhost与127.0.0.1的差异
    MySQL Memory--内存分配相关参数
    mysqldump命令之single-transaction
  • 原文地址:https://www.cnblogs.com/windwithlife/p/2923235.html
Copyright © 2011-2022 走看看