Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
使用前 先下载redis
npm i redis
const redis = require("redis");
let port = 6379;//端口号
let host = "127.0.0.1"//域名
let password = "123456";//密码
let client = redis.createClient(port,host);
client.auth(password,()=>{
console.log("ok") //打印成功代表启动成功
})
client.on("connect",()=>{
client.set('cxb','chou',(err,res)=>{
if(err){
console.log(err)
return;
}
console.log(res)
})
})
client.on("connect",()=>{
client.get("cxb",(err,res)=>{
if(err){
console.log(err)
return
}
console.log(res)//chou
})
})
这样设置值和取值我们发现每次都要写一套 所以我们可以把它写成函数直接调用
function setKey(key,value,callback){
client.on("connect",()=>{
client.set(key,value,callback)
})
}
setKey("zc","sb",(err,res)=>{
if(err){
console.log(err)
return
}
console.log(res)
})
function getKey(key,callback){
client.on("connect",()=>{
client.get(key,callback)
})
}
getKey("zc",(err,res)=>{
if(err){
console.log(err)
return
}
console.log(res)
})
redis整个公司就一个,内存也就100mb,避免重复,实际上用的是哈希结构存储,像ES6中的map对象,每一个公司中的每个人都可以指定一个一块区域
哈希指的是一个存储空间,占据的一块内存也是唯一标识
function hset(hash,key,value,callback){
client.on("connect",()=>{
client.hset(hash,key,value,callback)
})
}
function hget(hash,key,callback){
client.on("connect",()=>{
client.hget(hash,key,callback)
}
hset("class1106","hbw","chou",(err,res)=>{
if(err){
console.log(err)
return;
}
console.log(res)
})
hget("class1106","hbw",(err,res)=>{
if(err){
console.log(err)
return;
}
console.log(res)
})
上面是单个设置 单个查找一块区域里面的某个人 ,我们可以直接一次设置多个 然后取到整个区域
function hgetAll(hash,callback){
client.on("connect",()=>{
client.hgetall(hash,callback)
})
}
function hsetAll(hash,paramarr,callback){
client.on("connect",()=>{
client.hmset(hash, ...paramarr,callback)
})
}
hsetAll("class1",{"a1":"b1","a2":"b2"},(err,res)=>{
console.log(res)
})
hgetAll("class1",(err,res)=>{
console.log(res)
})