Redis应用场景,线程模型,数据类型,持久化方式概述

博客链接:Cs XJH’s Blog

简介

Redis属于Nosql数据库,即非关系型数据库,以key-value形式将数据缓存到服务器内存中,线程安全且支持高并发。其他Nosql数据库还有MongoDB,MemCache等

大家或许会有疑问,为什么要使用非关系型数据库?
因为基于内存的数据库对数据的存取速度远快于基于硬盘的存取速度,也就是说,io操作会严重影响数据的存取速度

另外,还有其他工具可以实行缓存,那么它们与Redis的区别是什么?
其中,JVM缓存框架就属于这一类工具,有EhCache,Cacheonix等。
从数据存取角度上来说,JVM缓存框架的数据存取速度要比Redis快;但从大数据缓存同步角度上,Redis要优于JVM缓存框架,因为Redis可以实现数据分布式共享。

主要应用场景

  1. 缓存Token
  2. 缓存短信验证码code
  3. 缓存查询数据
  4. 实现计数器
  5. 分布式锁
  6. 延迟操作

线程模型

Redis是单线程的,底层采用NIO的多路复用机制,即一个线程维护多个不同客户端的io操作。

NIO多路复用原理:通过一个selector选择器来捕获客户端的连接,换句话说,selector就是充当着一个注册中心的功能。
windows操作系统中的selector通过轮询客户端连接来读取数据,时间复杂度为O(n)。不仅效率低,而且存在空轮询的情况。其次,轮询的数据也有一定限制,难以支持上万的TCP连接。基于这个问题,所以Redis官方并没有推出windows版的安装包。
而Linux操作系统采用epoll实现事件驱动回调来实现selector,事件驱动回调即当客户端连接后有数据传输时,产生一个回调来接收数据。这样的话,就不需要通过轮询来接收数据,时间复杂度优化到O(1),并且不存在空轮询的情况。
另外,NIO多路复用不单独在Redis中才使用,在Tomcat9和Nginx都使用了该技术。

数据类型

  • string类型
    常用于存储key-value数据
  • list类型
    队列
  • set类型
    集合,key不能重复,常用于集合间的交,并,差等操作
  • hash类型
    <key, <key, value>>类型,常用于存储对象
  • sorted set类型
    常用于存储排行榜等数据

持久化

  • rdb
    以类似N秒内至少有M次数据集改动时,保存一次所有数据快照,实现持久化
  • aof
    按时间或指令改动频率,对新改动的数据以追加的方式持久化到文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值