当前位置: 首页 > news >正文

Redis——常见数据结构与单线程模型

Redis中的数据结构

Redis中所有的数据都是基于key,value实现的,这里的数据结构指的是value有不同的类型。

当前版本Redis支持10种数据类型,下面介绍常用的五种数据类型
在这里插入图片描述

底层编码

Redis在实现上述数据结构时,会在源码有特定的优化,保证用户进行增删查改的操作时的时间复杂度为O(1)

数据类型内部编码
stringraw, int, embstr
hashhashtable, ziplist
listlinkedlist, ziplist
sethashtable, intset
zsetskiplist, ziplist

string

raw:底层是字节数组或者字符数组
int:用来计数,当value是整数时,可以直接用int保存
embstr:针对于短字符串的特殊优化,可以占据更小的空间,一般来说,如果字符串小于39字节,使用embstr,超过则用raw

hash

hashtable:基本的哈希表
ziplist:压缩列表,当哈希表中的数据比较少时,优化为ziplist节省空间

list

linkedlist:链表
ziplist:压缩列表

事实上,从3.2版本后,Redis引入了quicklist,代替了linkedllist和ziplist,quicklist整体上是一个链表,链表中的每个节点是ziplist

set

hashtable:基本的哈希表
intset:如果集合中存放的都是整数就会优化为intset

zset

skiplist:本质上还是一个链表,但每个节点中有多个指针域,通过不同的指针域可以实现快速的检索元素,时间复杂度为O(logN)
ziplist:压缩列表

object encoding key

通过上面这个命令,可以查看key对应的实际编码方式
在这里插入图片描述

单线程模型

Redis只使用一个线程处理所有的命令,而其他的线程处理网络io
在这里插入图片描述
当redis服务器同时收到两个客户端对同一个变量的自增请求,但是由于Redis是单线程模型,因此多个请求要先在队列中排队,最终Redis还是串行的执行多个命令。

Redis之所以能够使用单线程工作,是因为Redis中的业务都是短小精悍的,并不会消耗过多的cpu资源。我们使用Redis时也需要保证没有请求占用时间特别长的操作,这样就会阻塞其他的命令

http://www.lryc.cn/news/119942.html

相关文章:

  • 大数据-玩转数据-Flink-Transform
  • Java泛型集合简明教程
  • Prometheus-RabbitMQ Exporter
  • flink读取kafka数据存储iceberg
  • 文章二:分支管理策略 - 分支玩转:Git分支管理实战
  • JS dom元素和鼠标位置之间的一系列属性快速参考
  • 【剑指 Offer 39】数组中超过一半的数字
  • list.stream.filter,List<List>转换为List
  • 手机里视频太大怎么压缩?压缩教程分享
  • Spring-Cloud-Loadblancer详细分析_3
  • 使用 VScode 开发 ROS 的Python程序(简例)
  • 2022年03月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • HarmonyOS/OpenHarmony应用开发-ArkTSAPI系统能力SystemCapability列表
  • 【01】基础知识:typescript安装及使用,开发工具vscode配置
  • 用C++实现的RTS游戏的路径查找算法(A*、JPS、Wall-tracing)
  • helm 制作应用的离线安装包
  • RN实现混合式开发-内嵌html
  • 2000-2022年全国各地级市绿色金融指数数据
  • MachineLearningWu_13/P60-P64_Tensorflow
  • centos7实现负载均衡
  • Django笔记之数据库函数之日期函数
  • 系统架构师---开发方法---敏捷开发
  • 数据中心液冷技术:规模扩张的新里程碑
  • 页面静态化(模板引擎Freemarker)
  • 详细记录Pycharm配置已安装好的Conda虚拟环境
  • photoshop生成器引入到electron项目(electron与photoshop建立通信)
  • Stable Diffuion webui Mac版本安装过程
  • ARM64 指令用法学习整理
  • stable-diffusion 模型效果+prompt
  • uniapp 小兔鲜儿 - 首页模块(1)