Redis—常用数据结构

news2025/1/20 10:51:53

Redis—常用数据结构

  • 🔎数据结构与内部编码

Redis 中常用的数据结构包括

  1. Strings—字符串
  2. Hashes—哈希表
  3. Lists—列表
  4. Sets—集合
  5. Sorted sets—有序集合

Redis 底层在实现上述数据结构时, 会在源码层面针对上述实现进行特定优化, 以达到节省时间 / 节省空间的效果

翻译一下就是
假设当前用的数据结构是哈希表, 但是这个背后的实现不一定是一个标准的哈希表, 有可能在特定场景下, 使用其他数据结构来实现, 但仍然满足使用哈希表时候的查询操作 O(1) 时间复杂度等其他方面特征

举个栗子🌰

你去鸭脖店买鸭脖, 但背后的数据结构不一定是鸭脖, 有可能在特定场景下优化为老鼠
但仍然满足味道, 口感和鸭脖一样

🔎数据结构与内部编码


Redis 中的数据结构会根据场景的不同自适应不同的内部编码

  • string
    • raw, 最基本的字符串
    • int, Redis 也会用于实现计数功能, 此时 value 作为一个整数可能会使用 int 编码
    • embstr, 针对短字符串进行的优化
  • hash
    • hashtable, 最基本的哈希表
    • ziplist, 当哈希表中元素较少时会优化成 ziplist(压缩列表), 节省空间
  • list
    • linkedlist, 链表
    • ziplist, 压缩列表
    • Redis 3.2 开始, 引入新的实现方式—quicklist, quicklist 就是一个链表, 其中的每个元素又是一个 ziplist, 兼顾空间和效率
  • set
    • hashtable, 最基本的哈希表
    • intset, 当集合中存储的都是整数时优化为 intset
  • zset
    • skiplist, 跳表—查询时间可以达到 O(logN)
    • ziplist, 压缩列表

在这里插入图片描述

通过 type key 查询对应 value 的数据类型
通过 object encoding key 查询对应 value 的内部编码

在这里插入图片描述


🌸🌸🌸完结撒花🌸🌸🌸

在这里插入图片描述

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

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

相关文章

卡片介绍、EMV卡组织、金融认证---安全行业基础篇2

一、卡片介绍 卡片是一种用于存储和传输数据的可携带式物品,通常由塑料或纸质材料制成。卡片通常具有特定的尺寸和形状,以适应各类读写设备。不同类型的卡片可以用于不同的应用,如身份验证、支付、门禁控制等。 接触卡 接触卡是一种需要与读…

量化策略:CTA,市场中性,指数增强

CTA 策略 commodity Trading Advisor Strategy,即“商品交易顾问策略”,也被称作管理期货策略。 期货T0,股票T1双向交易:就单向交易而言的,不仅能先买入再卖出(做多),而且可以先卖…

Java异常(Error与Exception)与常见异常处理——第八讲

前言 前面我们讲解了Java的基础语法以及面向对象的思想,相信大家已经基本掌握了Java的基本编程。在之前代码中,我们也看到代码写错了编译器会提示报错,或者编译器没有提示,但是运行的时候报错了,比如前面的数组查询下标超过数组的长度。所以在使用计算机语言进行项目开发的…

CLIP:连接文本-图像

Contrastive Language-Image Pre-Training CLIP的主要目标是通过对比学习,学习匹配图像和文本。CLIP最主要的作用:可以将文本和图像表征映射到同一个表示空间 这是通过训练模型来预测哪个图像属于给定的文本,反之亦然。在训练过程中&#…

高频策略:抢盘口,做市,短期趋势

利润来源 价格短期趋势随机游走震荡 策略分类 抢盘口:盘口大单封堵,快速在盘口中双向下单,赚取价差做市:盘口买卖活跃,预测市价单击穿距离,在盘口外双向下单,赚取价差 挂单范围要小于市价击穿距…

十二、分组查询

1、分组查询 (1)基础语法: select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组之后的过滤条件] (2)注意事项: (3)理解: select后的“字段列表…

personalized image enhancement 调研

Personalized Image Enhancement Using Neural Spline Color Transforms 这是TIP期刊 2020年的一篇论文,首先提出了一个能预测曲线的网络,预测一些锚点,根据锚点插值出连续的曲线,然后用曲线对raw image进行retouching。然后提出了…

ODC现已开源:与开发者共创企业级的数据库协同开发工具

OceanBase 开发者中心(OceanBase Developer Center,以下简称 ODC)是一款开源的数据库开发和数据库管理协同工具,从首个版本上线距今已经发展了三年有余,ODC 逐步由一款专为 OceanBase 打造的开发者工具演进成为支持多数…

第 361 场 LeetCode 周赛题解

A 统计对称整数的数目 枚举 x x x class Solution { public:int countSymmetricIntegers(int low, int high) {int res 0;for (int i low; i < high; i) {string s to_string(i);if (s.size() & 1)continue;int s1 0, s2 0;for (int k 0; k < s.size(); k)if …

快速为RPG辅助工具MTool增加更多快捷键(一键保存等)

起源&#xff1a;MTool是个好工具&#xff0c;本身固然好用&#xff0c;但是它本身的快捷键功能很少&#xff0c;虽然内置了一个录制工具&#xff0c;但是一个个的录&#xff0c;又麻烦&#xff0c;一般人也难以掌握 本文用快速方法增加更多快捷键&#xff0c;可以做到一键保存…

利用非线性解码模型从人类听觉皮层的活动中重构音乐

音乐是人类体验的核心&#xff0c;但音乐感知背后的精确神经动力学仍然未知。本研究分析了29名患者的独特颅内脑电图(iEEG)数据集&#xff0c;这些患者听了Pink Floyd的歌曲&#xff0c;并应用了先前在语音领域使用的刺激重建方法。本研究成功地从直接神经录音中重建了可识别的…

【性能优化】聊聊性能优化那些事

针对于互联网应用来说&#xff0c;性能优化其实就是一直需要做的事情&#xff0c;因为系统响应慢&#xff0c;是非常影响用户的体验&#xff0c;可能回造成用户流失。所以对于性能非常重要。最近正好接到一个性能优化的需求&#xff0c;需要对所负责的系统进行性能提升。目前接…

Python自动化小技巧22——获取中国高校排名数据

背景 【软科排名】2023年最新软科中国大学排名|中国最好大学排名 (shanghairanking.cn) 爬取这个网站所有的高校的数据&#xff0c;包括学习名称&#xff0c;层次&#xff0c;地区&#xff0c;分数等等信息&#xff1a;[办学层次,学科水平,办学资源,师资规模与结构,人才培养,…

红日靶场五(vulnstack5)渗透分析

环境搭建 win7 192.168.111.132&#xff08;仅主机&#xff09; 192.168.123.212&#xff08;桥接&#xff09; .\heart p-0p-0p-0win2008 ip: 192.168.111.131&#xff08;仅主机&#xff09; sun\admin 2020.comkali ip: 192.168.10.131&#xff08;nat&#xff09;vps&…

字节一面:说说地址栏输入 URL 敲下回车后发生了什么?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;作为一名前端开发工程师&#xff0c;我们只有了解地址栏输入 URL 敲下回车后发生的事件&#xff0c;才知道性能优化如何下手&#xff0c;性能优化也是前端必备知识&#xf…

第一章_线程基础知识

先拜拜大神 Doug Lea&#xff08;道格.利&#xff09; java.util.concurrent在并发编程中使用的工具包 为什么学习并用好多线程极其重要 硬件方面 摩尔定律失效 摩尔定律&#xff1a;它是由英特尔创始人之一Gordon Moore&#xff08;戈登.摩尔&#xff09;提出来的。其内容为…

Centos 6.5 升级到Centos7指导手册

一、背景 某业务系统因建设较早&#xff0c;使用的OS比较过时&#xff0c;还是centos6.5的系统&#xff0c;因国产化需要&#xff0c;需将该系统升级到BClinux 8.6&#xff0c;但官方显示不支持centos 6.x升级到8&#xff0c;需先将centos6.5升级到centos7的最新版&#xff0c…

Python之作业(一)

Python之作业&#xff08;一&#xff09; 作业 打印九九乘法表 用户登录验证 用户依次输入用户名和密码&#xff0c;然后提交验证用户不存在、密码错误&#xff0c;都显示用户名或密码错误提示错误3次&#xff0c;则退出程序验证成功则显示登录信息 九九乘法表 代码分析 先…

【100天精通Python】Day52:Python 数据分析_Numpy入门基础与数组操作

目录 1 NumPy 基础概述 1.1 NumPy的主要特点和功能 1.2 NumPy 安装和导入 2 Numpy 数组 2.1 创建NumPy数组 2.2 数组的形状和维度 2.3 数组的数据类型 2.4 访问和修改数组元素 3 数组操作 3.1 数组运算 3.2 数学函数 3.3 统计函数 4 数组形状操作 4.1 重塑数组形…

Sentinel 流量控制框架

1. Sentinel 是什么&#xff1f; Sentinel是由阿里中间件团队开源的&#xff0c;面向分布式服务架构的轻量级高可用流量控制组件。 2. 主要优势和特性 轻量级&#xff0c;核心库无多余依赖&#xff0c;性能损耗小。 方便接入&#xff0c;开源生态广泛。 丰富的流量控制场景。 …