一、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 之间的关系:
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
![](https://img2018.cnblogs.com/blog/1100100/201910/1100100-20191011170232251-98024081.png)
当有新消息通过 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)
})