隐藏

Redis数据库在Node.js中的使用

发布:2024/1/27 13:19:19作者:管理员 来源:本站 浏览次数:1068

1. 安装node-redis


npm install redis --save


如果注册了淘宝镜像,也可以用以下方式进行安装。


cnpm install redis --save


下载地址。


2. 引入node-redis


   const redis = require("redis");

   // 参数为端口号+IP地址

   const client = redis.createClient(6379, '127.0.0.1');


3. 使用node-redis

3.1. 操作字符串类型的数据;


   // 删除所有数据

   client.flushall();

   

   // 设置数据

   client.set('username', '李四');

   // 设置过期 5 秒

   client.set('username', '李四', 'EX', '5');

   // 获取数据

   client.get('username', (err, val) => {

       if (err) {

           console.log(err);

           return;

       }

       console.log(val);

       // 李四

   });

   

   // 删除数据

   client.del('username', (err, val) => {

       if (err) {

           console.log(err);

           return;

       }

       console.log(val);

       // 1

   });

   

   

   var userInfo = {

       username: '张三',

       age: '20'

   }

   // 将对象转为字符串再存储

   client.set('userInfo', JSON.stringify(userInfo));

   // 获取数据

   client.get('userInfo', (err, result) => {

       if (err) {

           console.log(errr);

           return;

       }

       console.log(JSON.parse(result));

       // {username:'张三',age:'20'}

   })


3.2. 操作列表类型的数据;


   // 删除所有数据

   client.flushall();

   

   // 从列表右侧加入数据

   client.rpush('userlist', '张三');

   client.rpush('userlist', '李四');

   client.rpush('userlist', '王五');

   // 从列表左侧加入数据

   client.lpush('userlist', '陈二');

   

   

   // 获取列表的值

   client.lrange('userlist', 0, -1, (err, data) => {

       if (err) {

           console.log(err);

           return;

       };

       console.log(data);

       // ['陈二','张三','李四','王五']

   });

   

   // 删除列表右侧第一个值

   client.rpop('userlist');

   // 删除列表左侧第一个值

   client.lprop('userlist');

   // 获取列表的值

   client.lrange('userlist', 0, -1, (err, data) => {

       if (err) {

           console.log(err);

           return;

       };

       console.log(data);

       // ['张三','李四']

   });


3.3. 操作集合类型的数据;


   // 删除所有的数据

   client.flushall();

   

   // 添加一条数据到集合中

   client.sadd('userlist','张三');

   client.sadd('userlist','李四');

   // 获取集合的数据

   client.smembers('userlist', (err, resutl) => {

       if(err){

           console.log(err);

           return;

       };

    console.log(resutl);

       // ['李四','张三']

   });

   

   // 同时添加多条数据到集合中

   client.sadd('userlist', '王五', '赵四');

   // 获取集合的数据

   client.smembers('userlist', (err, resutl) => {

       if(err){

           console.log(err);

           return;

       };

       console.log(resutl);

       // ['赵四','王五','李四','张三']

   });


3.4. 操作哈希类型的数据;


   // 删除所有数据

   client.flushall();

   

   // 一次增加一条数据    

   client.hset('userInfo','name',"张三");

   client.hset('userInfo','age',"20");

   

   // 获取数据

   client.hgetall('userInfo', (err, result) => {

       if(err){

           console.log(err);

       }

       console.log(result);

       // {name:'张三',age:'20'}

   });

   

   

   

   // 一次增加多条数据

   client.hmset('userInfo','name','李四','age','20','sex','女');

   // 获取数据

   client.hgetall('userInfo', (err, result) => {

       if(err){

           console.log(err);

       }

       console.log(result);

       // {name:'李四',age:'20',sex:'女'}

   });


3.5. 发布/订阅的使用;


广播服务


   var redis = require("redis");

   var client = redis.createClient(6379, '127.0.0.1');

   

   //  广播消息

   client.publish('sendServer01', 'this is news info');

   client.publish('sendServer02', 'this is product info');


第一个订阅服务


   var redis = require("redis");

   var client = redis.createClient(6379,'127.0.0.1');

   

   // 订阅消息

   client.subscribe('sendServer01');

   

   // 监听消息

   client.on('message',(channel,msg)=>{

       console.log(channel);

       // sendServer01

       console.log(msg);

       // this is news info

   })


第二个订阅服务


   var redis = require("redis");

   var client = redis.createClient(6379,'127.0.0.1');

     

   // 订阅消息

   client.subscribe('sendServer02');

   // 监听消息

   client.on('message',(channel,msg)=>{

       console.log(channel);

       // sendServer02

       console.log(msg);

       // this is product info

   });