Redis的基本知识(偏八股)

前言

本文篇概念,着重介绍Redis的执行效率、功能作用、数据类型、

执行效率

江湖上都流传这Redis的执行效率是挺快的,那为什么说它快呢?有以下几个原因:

  1. 基于内存
  2. 单线程模型
  3. 高效数据结构
  4. 非阻塞I/O

基于内存:

内存的读写效率是远远比磁盘读写快的,一般是前者纳秒级别,后者是毫秒级别,所以效率可想而知,而我们的Redis是把数据在内存是进行读写的,相比于MySQL这些磁盘读写(虽然有内存缓存机制)的在访问速度上就快人一步了

单线程模型

可能有人会疑惑,为什么Redis中使用单线程就比多线程的执行效率更高呢???其实很大原因在于Redis是非关系型数据库,底层就跟Hash表一样,对key的查询可以做到O(1)的时间复杂度,这个执行效率单线程完全够用了,如果还多加一个多线程就得考虑线程切换或者线程争夺任务的资源带来的消耗,执行起来的效率和成本可能还不如单线程。

高效数据结构

在Redis中使用了高效的数据结构进行处理数据:Hash表、有序集合等,并且这些数据结构还是经过了优化处理的,例如在有序集合底层数据结构中,数据小是压缩列表,数据大之后会升级为跳跃表(跳表,时间复杂度O(logn),力扣上有道困难题是实现跳表,可以尝试一下)

非阻塞I/O

在Redis中使用了非阻塞I/O模型,非阻塞I/O就是异步I/O操作方式,在对数据进行读写的时候可以执行其他任务,而不是等待I/O任务操作完成。这就意味着,Redis在处理I/O的时候,可以不用等待磁盘读写或者网络通信过程中的数据返回,执行其他任务,充分利用CPU,提高吞吐量

总结:我个人感觉可以用:访问快、处理快、获取快、吞吐高来概括

功能作用

Redis的功能作用如下:

  1. 会话管理: 保存用户登录信息,如JWT、Session这些信息
  2. 存储普通缓存: 对一些数据进行缓存,博客详情页等
  3. 实现分布式锁: Redis天然支持分布式服务(),在微服务架构下可以比较便捷的实现分布式锁
  4. 简单的消息队列: 由于Redis有列表数据类型,所以可以实现简单的发布-订阅模式的消息队列

数据类型

常见的Redis数据类型如下:

  1. String(字符串): 可以存储一些序列化消息、Session、JWT等
  2. List(列表类型): 实现简单的消息队列,存储某项列表数据
  3. Hash(哈希表) : 常见的使用场景就是一些Session值,或者说把<key,val>记录下来,举个例子:购物车的商品信息,用户ID作为key,商品的价格数量等信息作为val
  4. Set(集合): 一个无重复集合,类似于Java中的HashSet
  5. Sorted Set (有序集合): 相比于Set集合多了排序属性score,可以利用他来实现排名功能

如果对数据类型这一块还了解详细一点可以看笔者的其他关于Redis的博客:
Redis基本类型及其使用命令
Redis事务及其锁机制
Redis6的三种新数据类型
Redis应用问题(缓存穿透&缓存击穿&缓存雪崩)
END

相关推荐
冒泡的肥皂43 分钟前
MVCC初学demo(一
数据库·后端·mysql
.Shu.2 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
薛晓刚4 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队5 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术
星空下的曙光5 小时前
mysql 命令语法操作篇 数据库约束有哪些 怎么使用
数据库·mysql
小楓12015 小时前
MySQL數據庫開發教學(一) 基本架構
数据库·后端·mysql
染落林间色5 小时前
达梦数据库-实时主备集群部署详解(附图文)手工搭建一主一备数据守护集群DW
数据库·sql
颜颜yan_6 小时前
企业级时序数据库选型指南:从传统架构向智能时序数据管理的转型之路
数据库·架构·时序数据库
lichenyang4536 小时前
管理项目服务器连接数据库
数据库·后端
沙振宇6 小时前
【数据库】通过‌phpMyAdmin‌管理Mysql数据
数据库·mysql