一、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 集合
基本语法:
给集合增数据: 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 订阅发布
下图展示了频道 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) })