Redis - 数据类型与编码方式

Redis中常用的5种数据类型

包括字符串、哈希、列表、集合、有序集合

  • 字符串,相当于Java中的String
  • 哈希,相当于Java中的HashMap
  • 列表,相当于Java中的List
  • 集合,相当于Java中的Set
  • 有序集合,多存储了一个权重

Redis承诺使用上述数据结构进行操作的时间复杂度与我们所知道的哈希表、字符串等是一致的,但是内部实现这些数据结构不一定是哈希表、字符串等

编码方式

字符串

字符串包括raw、int、embstr3种编码方式

  • raw:就是最基本的字符串(底层使用一个字节数组存储)
  • int:当value是一个整数时,Redis可能会使用int来保存字符串
  • embstr:针对短字符串进行的特殊优化

这些编码方式是自适应的,我们使用Redis时感知不到

哈希表

哈希表的编码方式包括hashtable、ziplist

  • hashtable:最基本的哈希表
  • ziplist:压缩列表,在哈希表中元素比较少的时候,会优化成ziplist,能够节省空间

列表

编码方式有:linkedlist、ziplist

  • linkedlist:链表
  • ziplist:压缩列表

Redis3.2版本开始引入了quicklist(同时兼顾linked和ziplist的优点,可以理解为,quicklist是一个链表,每个元素是一个ziplist)

集合

编码方式:hashtable、intset

  • hashtable:哈希表
  • intset:整数集合(如果集合中的数全是int类型的,会优化成intset)

有序集合

编码方式:skiplist、ziplist

  • skiplist:跳表,特殊的链表,查询的时间复杂度是O(logN)
  • ziplist:压缩列表

使用命令查看key对应的value的编码方式

语法如下

object encoding key

在这里插入图片描述

Redis单线程模型

Redis只使用一个线程处理所有的命令请求(并不是说一个Redis服务器进程内部只有一个线程,还有其他线程处理其他的事情),所以当多个请求同时到达服务器,不会产生线程安全问题

那么,为什么Redis是单线程的速度还这么快?(前提是和MySQL等关系型数据库比较)

原因:

1、Redis访问的是内存,数据库访问的是硬盘

2、Redis核心功能比数据库的核心功能更简单,只是针对key进行操作,而数据库会有更多复杂的操作

3、Redis单线程模型避免了线程竞争的开销

4、处理网络IO的时候,使用了IO多路复用机制(一个线程管理了多个Socket)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git Bash通过SSH key 登录github的详细步骤

1 问题 通过在windows 终端中的通过git登录github 不再是通过密码登录了,需要本地生成一个密钥,配置到gihub中才能使用 2 步骤 (1)首先配置用户名和邮箱 git config --global user.name "用户名"git config --global…

如何为64位LabVIEW配置正确的驱动程序

在安装 64位 LabVIEW 后,确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动,然后安装了 64位 LabVIEW,需要确保为 64位 LabVIEW 安装和配置适当的驱动程序,才能正常访问硬件设备。以下是详细步骤&#xff1a…

BGP边界网关协议(Border Gateway Protocol)路由聚合详解

一、路由聚合 1、意义 在大规模的网络中,BGP路由表十分庞大,给设备造成了很大的负担,同时使发生路由振荡的几率也大大增加,影响网络的稳定性。 路由聚合是将多条路由合并的机制,它通过只向对等体发送聚合后的路由而…

戴尔电脑用u盘重装系统_戴尔电脑用u盘重装win10系统教程

戴尔电脑用u盘重装系统?戴尔电脑这几年默认预装win10家庭版和win11家庭版。有的用户用上了预装win11家庭版的戴尔电脑,使用一段时间依然不习惯,于是想退回win10。但不知道怎么重装win10,这几年的戴尔电脑建议采用U盘方式安装系统比…

QT TLS initialization failed

qt使用QNetworkAccessManager下载文件(给出的链接可以在浏览器里面下载文件),下载失败, 提示“TLS initialization failed”通常是由于Qt在使用HTTPS进行文件下载时,未能正确初始化TLS(安全传输层协议&…

【图文详解】lnmp架构搭建Discuz论坛

安装部署LNMP 系统及软件版本信息 软件名称版本nginx1.24.0mysql5.7.41php5.6.27安装nginx 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 关闭防火墙 systemctl stop firewalld &&a…

06、Redis相关概念:缓存击穿、雪崩、穿透、预热、降级、一致性等

Redis相关概念:缓存击穿、雪崩、穿透、预热、降级、一致性等 Redis缓存雪崩、缓存击穿、缓存预热热点key、缓存降级、短链接、分布式锁秒杀、预减库存、 堆外缓存Redis架构设计、Redis动态刷新、Redis和DB双写一致性、过期删除策略、集群数据倾斜等一、缓存雪崩 缓…

【记录自开发的SQL工具】工具字符拼接、Excel转sql、生成编码、生成测试数据

记录自己开发的一个SQL聚合工具 功能介绍: 文本加引号 给多行文本前后添加引号,并用逗号连接,直接复制到 sql 中的 in 条件中 Excel转SQL 适用于将Excel表格的数据,批量导入到数据库的场景 此工具能快速将excel表格转换为i…

2024年工作总结

一、2024年个人成长、工作总结 1.博客文章 在这一年的创作中,共发布95篇文章,其中: Scrum敏捷项目管理: Scrum敏捷项目管理 前端技术vue jquery: jQuery(一)jQuery基本语法 分布式事务&…

【技术洞察】2024科技绘卷:浪潮、突破、未来

涌动与突破 2024年,科技的浪潮汹涌澎湃,人工智能、量子计算、脑机接口等前沿技术如同璀璨星辰,方便了大家的日常生活,也照亮了人类未来的道路。这一年,科技的突破与创新不断刷新着人们对未来的想象。那么回顾2024年的科…

Python 之 Excel 表格常用操作

示例文件 test.xlsx 将各个表单拆分成单独的 Excel 文件 import os.pathimport openpyxl import pandasdef handle_excel(file_path):dirname os.path.dirname(file_path)basename os.path.basename(file_path).split(".")[0]wb openpyxl.load_workbook(file_pat…

激活版,快速安装

每天开机都要等待很长时间,玩游戏或看视频时频繁卡顿,甚至偶尔还会莫名其妙地崩溃。这种情况几乎每个人都遇到过,真是让人头疼不已。 别担心,其实有一种方法可以让你的电脑恢复如新,让我们一起看看如何解决这些烦恼吧…

Kimi 1.5解读:国产AI大模型的创新突破与多模态推理能力(内含论文地址)

文章目录 一、Kimi 1.5的核心技术创新(一)长上下文扩展(Long Context Scaling)(二)改进的策略优化(Improved Policy Optimization)(三)简化框架(S…

uniapp——App 监听下载文件状态,打开文件(三)

5 实现下载文件并打开 这里演示,导出Excel 表格 文章目录 5 实现下载文件并打开DEMO监听下载进度效果图为什么 totalSize 一直为0? 相关Api: downloader DEMO 提示: 请求方式支持:GET、POST;POST 方式需要…

MyBatis进阶

1. 动态SQL 1.1 <if>标签的使用(xml版本) 动态 SQL 是Mybatis的强⼤特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 现在有一个需求.注册分为两种字段&#xff1a;必填字段和⾮必填字段&#xff0c;那如果在添加用户的时候有不确定的字段传⼊&#xff0c;程…

粒子群算法 笔记 数学建模

引入: 如何找到全局最大值&#xff1a;如果只是贪心的话&#xff0c;容易被局部最大解锁定 方法有&#xff1a;盲目搜索&#xff0c;启发式搜索 盲目搜索&#xff1a;枚举法和蒙特卡洛模拟&#xff0c;但是样例太多花费巨量时间 所以启发式算法就来了&#xff0c;通过经验和规…

【Unity3D】《跳舞的线》游戏的方块单方向拉伸实现案例

通过网盘分享的文件&#xff1a;CubeMoveMusic.unitypackage 链接: https://pan.baidu.com/s/1Rq-HH4H9qzVNtpQ84WXyUA?pwda7xn 提取码: a7xn 运行游戏点击空格动态创建拉伸的方块&#xff0c;由Speed控制速度&#xff0c;新方向是随机上下左右生成。 using System.Collect…

Android Studio打包APK

1.导出APK安装包 如果是首次打包&#xff0c;Create new 单击蓝色对话框右边文件夹&#x1f4c2;图标 &#xff0c;选择密钥保存路径&#xff0c;然后在下方File name对话框中填写您想要名称&#xff0c;再点击OK回到密钥创建对话框。 在此对话框中填写密码&#xff08;Passwo…

GSI快速收录服务:让你的网站内容“上架”谷歌

辛苦制作的内容无法被谷歌抓取和展示&#xff0c;导致访客无法找到你的网站&#xff0c;这是会让人丧失信心的事情。GSI快速收录服务就是为了解决这种问题而存在的。无论是新上线的页面&#xff0c;还是长期未被收录的内容&#xff0c;通过我们的技术支持&#xff0c;都能迅速被…

[ACTF2020 新生赛]Include1

题目 点击tips后&#xff1a; 使用PHP伪协议直接读取flag /?filephp://filter/readconvert.base64-encode/resourceflag.php base64解码 拿下flag flag{6cce5a3d-997a-4c8a-ba07-f6652ee462a9}