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
});