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

2022-05-06 15:01:44 浏览数 (1)

1. 安装node-redis

代码语言:javascript复制
npm install redis --save

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

代码语言:javascript复制
cnpm install redis --save

参考:

https://github.com/NodeRedis/node-redis

2. 引入node-redis

代码语言:javascript复制
const redis = require("redis");
// 参数为端口号 IP地址
const client = redis.createClient(6379, '127.0.0.1');

3. 使用node-redis

1. 操作字符串类型的数据

代码语言:javascript复制
// 删除所有数据
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'}
})

2. 操作列表类型的数据

代码语言:javascript复制
// 删除所有数据
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. 操作集合类型的数据

代码语言:javascript复制
// 删除所有的数据
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);
    // ['赵四','王五','李四','张三']
});

4. 操作哈希类型的数据

代码语言:javascript复制
// 删除所有数据
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:'女'}
});

5. 发布/订阅的使用

广播服务

代码语言:javascript复制
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');

第一个订阅服务

代码语言:javascript复制
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
})

第二个订阅服务

代码语言:javascript复制
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
});

0 人点赞