Redis

什么是Redis
Redis是一款内存高速缓存数据库,是Nosql数据库中使用较为广泛的非关系型内存数据库。Redis全称为:Remote Dictionary Server (远程数据服务),使用C语言编写,Redis是一个key-value存储系统(键值存储系统),支持丰富的数据类型,如:string(字符串)list(链表)set(集合)zset(sorted set –有序集合)hash(哈希类型,类似于Java中的map)。 Redis基于内存运行并支持持久化的NoSQL数据库,也被人们称为数据结构服务器;可用于缓存,事件发布或订阅,高速队列等场景。

Redis特点
Redis以内存作为数据存储介质,读写数据的效率极高。
Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启,数据也不会丢失。
Redis的存储分为内存存储、磁盘存储和log文件。
Redis可以从磁盘重新将数据加载到内存中,也可以通过配置文件对其进行配置,因此,redis才能实现持久化。
Redis支持主从模式,可以配置集群,更利于支撑大型的项目。
Redis应用场景,能做什么
众多语言都支持Redis,因为Redis交换数据快,在服务器中常用来存储一些需要频繁调取的数据,节省内存开销,也极大的提升了速度。
将一些热点数据存储到Redis中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
1、会话缓存(最常用)
2、消息队列(支付)
3、活动排行榜或计数
4、发布,订阅消息(消息通知)
5、商品列表,评论列表

大数据时代淘宝、微信、以及微博等都广泛的使用了redis数据库,将一些固定不变的数据例如学校,区域等固定的信息保存在关系型数据库中。然后对于经常变化的数据例如淘宝每个节日都会有比较热门的搜索显示在搜索框,当节日过去关键字自动删除,为了便于管理,可以将这些数据保存在redis数据库中,并设置过期时间,到达时间就自动删除。

redis结合nodejs使用
key-value存取

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")
})
// 存值方法
function setKey(key,value,callback){
    client.on("connect",()=>{
        client.set(key,value,callback)
    })
}
// 取值方法
function getKey(key,callback){
    client.on("connect",()=>{
        client.get(key,callback)
    })
}
// 调用方法
setKey("abc","123",(err,res)=>{
    if(err){
        console.log(err)
        return
    }
    console.log(res) 
})
getKey("abc",(err,res)=>{
    if(err){
        console.log(err)
        return
    }
    console.log(res) //123
})

哈希结构存储
redis整个公司就一个,内存也就100mb,避免重复,实际用的是哈希结构存储
像ES6中的map对象,每一个公司中的每个人都可以指定一个一块区域

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")
})
// 哈希指的是一个存储空间,占据的一块内存也是唯一标识
// 存值方法
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","tom","chou",(err,res)=>{
     if(err){
       console.log(err)
       return;
   }
   console.log(res)
 })
hget("class1106","tom",(err,res)=>{
    if(err){
        console.log(err)
        return;
    }
    console.log(res) //chou
 })

哈希可存多个
hgetall 存
hmset 取

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)
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值