Redis在Nodejs中的使用

一、Redis 的类型
值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

二、Redis 字符串 (Nodejs 中用的最多)

Redis 字符串数据类型的相关命令用于管理 redis 字符串值。

基本语法:

查看所有的 key: 普通设置: 设置并加过期时间: 获取数据: 删除指定数据: 删除全部数据: 查看类型: 设置过期时间:
keys *
set key value
set key value EX 30 get key
del key
flushall type key
expire key 20
表示 30 秒后过期
表示指定的 key5 秒后过期

demo:

/*

https://www.npmjs.com/package/redis

1、安装
 
npm install redis --save


2、引入 建立连接


var redis = require("redis"),
    client = redis.createClient();


*/

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


// client.set('username',"zhangsan");

// client.get('username',(err,value)=>{
//     if(err){
//         console.log(err);
//         return;
//     }
//     console.log(value);
// })



// client.set('username','张三');

// client.set('username','张三',"EX",'5');


// client.get('username',(err,val)=>{
//     if(err){
//         console.log(err);
//         return;
//     }

//     console.log(val)

// })


//删除

// client.del('name',(err,val)=>{
//     if(err){
//         console.log(err);
//         return;
//     }

//     console.log(val)

// })



//字符串存储对象

var userinfo={

    username:'zhangsan',
    age:'20'
}

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


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

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

三、Redis 列表

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或 者尾部(右边)

 

基本语法:

列表右侧增加值: rpush key value 
列表左侧增加值: lpush key value
右侧删除值: rpop key
左侧删除值: lpop key
获取数据: lrange key 
删除指定数据:del key
删除全部数据: flushall
查看类型: type key

demo:

/*

https://www.npmjs.com/package/redis

1、安装
 
npm install redis --save


2、引入 建立连接


var redis = require("redis"),
    client = redis.createClient();


*/

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

//设置值

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

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


// client.lpush('userlist','aaa');

// client.rpush('userlist','bbb');



client.rpop('userlist');


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

    if(err){

        console.log(err);
        return;
    }

    console.log(data);

})

四、Redis 集合

 

Redis Set String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数 据。它和列表的最主要区别就是没法增加重复值
基本语法:

 

给集合增数据: sadd key value 
删除集合中的一个值:srem key value 
获取数据:smembers key 
删除指定数据:del key
删除全部数据:flushall

demo:

/*

https://www.npmjs.com/package/redis

1、安装
 
npm install redis --save


2、引入 建立连接


var redis = require("redis"),
    client = redis.createClient();


*/

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



//删除所有的缓存数据

/*
client.flushall();



client.flushall((err,val)=>{

    console.log(val);
});
*/

// client.sadd('sList','张三');

// client.sadd('sList','李四');

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

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


    console.log(resutl);

})

五、Redis 哈希

Redis hash 是一个 string 类型的 field value 的映射表,hash 特别适合用于存储对象。

基本语法:

、
设置值 hmset : hmset zhangsan name "张三" age 20 sex “男” 
设置值 hset : hset zhangsan name "张三"
获取数据:hgetall key

demo:

/*

https://www.npmjs.com/package/redis

*/

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

    
//增加一条数据    
// client.hset('userinfo','name',"zhangsan");


// client.hset('userinfo','age',"20");



// client.hmset('userinfo','name','zhangsna','age','20','sex','女');

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

    console.log(result);
})

六、Redis 订阅发布

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 client5 client1 之间的关系:

 

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客 户端:

发布

client.publish('testPublish', 'message from publish.js');

订阅

client.subscribe('testPublish'); 
client.on('message', function(channel, msg){
    console.log('client.on message, channel:', channel, ' message:', msg);
 });

demo:server1.js

/*

https://www.npmjs.com/package/redis

*/

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

    //发送消息  广播

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

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

server2.js

/*

https://www.npmjs.com/package/redis

*/

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

    //监听广播
    client.subscribe('sendServer01');



    client.subscribe('sendServer02');

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


        console.log(channel,msg)
    })

server3.js

/*

https://www.npmjs.com/package/redis
*/

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

 //监听广播
 client.subscribe('sendServer02');
 client.on('message',(channel,msg)=>{

     console.log(channel,msg)
 })

 

 

 

原文地址:https://www.cnblogs.com/loaderman/p/11655375.html