【学习笔记】Redis学习笔记——第8章 对象

news2024/10/6 2:51:31

第8章 对象

8.1 对象的类型与编码

在Redis中存储对象时,键值对全部封装为RedisObject。

8.1.1 类型(type)

记录了对象的类型,Redis存储的Key为字符串对象,而Value可以是字符串对象、列表对象、哈希对象、集合对象、有序集合对象当中的一种。

8.1.2 编码和底层实现(encoding)

记录了一个对象使用的数据结构实现,同一种对象会使用不同的数据结构来实现,比如哈希对象可以用压缩列表与字典两种数据结构来实现。

8.2 字符串对象

1>若字符串对象存储的是一个long型的整数,那么会直接存储一个整数。
2>若存储的是39字节内的短字符串,则使用embstr码的字符串(短字符串的优化存储方式)。
3>若存储的是大于39字节的段字符串则使用SDS来保存。

8.2.1 编码的转换

当对long类型进行操作使其变成字符串类型时,会转换为SDS保存。
当对embstr进行任何修改命令都会使用SDS来保存。

8.2.2 字符串命令的实现

略,P68。

8.3 列表对象

1>当元素小于512个,且所有字符串长度小于64字节时,使用ZipList压缩列表来实现。
2>其他情况使用链表来存储。

8.3.1 编码转换

当元素超过个数限制或存入一个长字符串时会转换为链表存储。

8.3.2 列表命令实现

略,P71。

8.4 哈希对象

1>当键值对数量小于512个,每个键值对长度小于64字节时使用压缩列表存储。
2>其他情况使用字典存储。
(字典就相当于Java中的hashMap,原理及实现应该就不用再赘述了)

8.5 集合对象

1>当元素数量不超过512个,且都为整数时使用整数集合实现。
2>其他情况使用字典实现,关系相当于Java当中hashSet与hashMap的关系。

8.6 有序集合对象

1>元素小于128个(不同于之前的512个,因为需要做排序所以使用了更小的最大长度限制),成员长度小于64字节,使用压缩列表。
2>其他情况使用跳表+字典实现,其中字典的Key保存了分值,Value保存的存储数据。

8.7 类型检查与命令多态

有些命令可以对任意类型键执行,有些只能对特定类型健执行。

8.7.1 类型检查的实现

通过检查不同健对应值对象的Type实现

8.7.2 多态命令的实现

通过编码或类型的不同来执行不同的方法。

8.8 内存回收

通过引用计数法回收内存

8.9 对象共享

当两个健保存同一个整数对象(0-9999)时,会指向同一个初始化好的对象,然后让引用计数器+1。

8.10 对象的空转时长

Redis对象存在lru字段,某些内存回收的配置会在内存达到上线时回收掉lru较大的对象。

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

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

相关文章

算法的空间复杂度(C语言)

1.空间复杂度的定义 算法在临时占用储存空间大小的量度(就是完成这个算法所额外开辟的空间),空间复杂度也使用大O渐进表示法来表示 注: 函数在运行时所需要的栈空间(储存参数,局部变量,一些寄存器信息等)…

MySQL第三天作业

一、在数据库中创建一个表student,用于存储学生信息 CREATE TABLE student( id INT PRIMARY KEY, name VARCHAR(20) NOT NULL, grade FLOAT ); 1、向student表中添加一条新记录 记录中id字段的值为1,name字段的值为"monkey"…

STM32第十六课:WiFi模块的配置及应用

文章目录 需求一、WiFi模块概要二、配置流程1.配置通信串口,引脚和中断2.AT指令3.发送逻辑编写 三、需求实现代码总结 需求 完成WiFi模块的配置,使其最终能和服务器相互发送消息。 一、WiFi模块概要 本次使用的WiFi模块为ESP-12F模块(安信可&#xf…

字符串——string类的常用接口

一、string类对象的常见构造 二、string类对象的容量操作 三、string类对象的访问及遍历操作 四、string类对象的修改操作 一、string类对象的常见构造 1.string() ——构造空的string类对象,也就是空字符串 2.string(const char* s) ——用字符串来初始化stri…

Win10如何设置远程桌面?

远程桌面介绍 远程桌面是一款Windows提供的远程工具,旨在连接同一局域网内的两台计算机。如果您掌握被控端电脑的IP地址,便可直接连接到这台已启用远程桌面的计算机,通过远程桌面进行文件传输或提供远程技术支持。 在同一家公司内&#xff0…

JVM专题之垃圾收集器

JVM参数 3.1.1 标准参数 -version -help -server -cp 3.1.2 -X参数 非标准参数,也就是在JDK各个版本中可能会变动 ``` -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定 3.1.3 -XX参数 > 使用得最多的参数类型 > > 非…

十一、作业

1.从大到小输出 写代码将三个整数数按从大到小输出。 void Swap(int* px, int* py) {int tmp *px;*px *py;*py tmp;} int main() {int a 0;int b 0;int c 0;scanf("%d %d %d", &a, &b, &c);int n 0;if (a<b){Swap(&a, &b);}if (a &l…

vscode配置latex环境制作beamer ppt

vscode配置latex环境制作beamer ppt 文章目录 vscode配置latex环境制作beamer ppt1. 安装Tex Live2. 安装vscode插件3. 测试Reference 写在前面&#xff0c;笔者之前一直使用overleaf来制作beamerppt&#xff0c;但是免费版本会限制编译时间上限&#xff0c;故在本地配置了late…

高级计算机体系结构--期末真题及题型总结

2024 年春季学期期末考题回顾一、名词解释二、简答题2007 年简答题2008 年简答题简答题答案 三、分析题1. MESI 和 Dragon 协议计算给定内存存取序列所需的时钟周期2007年第一题及参考答案例题及解答 2. 顺序一致性存储模型&#xff0c;判断进程的合法输出2007年第二题及参考答…

苍穹外卖 ...待更新

苍穹外卖 1、 阿里云OSS2、菜品分类查询 1、 阿里云OSS 工具类 package com.sky.utils;import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import lombok.AllArgsConstructor…

【每日一练】python三目运算符的用法

""" 三目运算符与基础运算的对比 """ a 1 b 2#1.基础if运算判断写法&#xff1a; if a > b:print("基础判断输出&#xff1a;a大于b") else:print("基础判断输出&#xff1a; a不大于b")#2.三目运算法判断&#xff1a;…

【云原生】Prometheus监控Docker指标并接入Grafana

目录 一、前言 二、docker监控概述 2.1 docker常用监控指标 2.2 docker常用监控工具 三、CAdvisor概述 3.1 CAdvisor是什么 3.2 CAdvisor功能特点 3.3 CAdvisor使用场景 四、CAdvisor对接Prometheus与Grafana 4.1 环境准备 4.2 docker部署CAdvisor 4.2.2 docker部署…

flask使用定时任务flask_apscheduler(APScheduler)

Flask-APScheduler描述: Flask-APScheduler 是一个 Flask 扩展&#xff0c;增加了对 APScheduler 的支持。 APScheduler 有三个内置的调度系统可供您使用&#xff1a; Cron 式调度&#xff08;可选开始/结束时间&#xff09; 基于间隔的执行&#xff08;以偶数间隔运行作业…

洛谷 P3613 学习用map代替大大大数组的好题

题目链接&#xff1a;P3613 【深基15.例2】寄包柜 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目截图&#xff1a; 题意分析&#xff1a; 非常简单的存入和取出操作 唯一的 “难点” 在于 数组开不到 a[100007][100007]&#xff0c;会暴内存 非常巧妙的引入 map 来解决…

Square Root SAM论文原理

文章目录 Square Root SAM论文原理核心原理SLAM问题的3种表示贝叶斯网络因子图&#xff08;Factor graph&#xff09;马尔科夫随机场(Markov Random Field, MRF) SLAM最小二乘问题&线性化因式分解 factorization矩阵与图(Matrices ⇔ Graphs)因式分解&变量消元(Factori…

深入理解 Kata Containers

目录 引言Kata Containers 的定义Kata Containers 的架构Kata Containers 的工作原理Kata Containers 的应用场景Kata Containers 在 CentOS 上的常见命令实验场景模拟总结 1. 引言 随着云计算和容器技术的迅猛发展&#xff0c;安全性和性能成为了用户关注的焦点。传统容器技…

STM32CubeMX实现4X5矩阵按键(HAL库实现)

为了实现计算器键盘&#xff0c;需要使用4X5矩阵按键&#xff0c;因此&#xff0c;我在4X4矩阵键盘上重新设计了一个4X5矩阵按键。原理图如下&#xff1a; 原理描述&#xff1a; 4X5矩阵按键&#xff0c;可以设置4个引脚为输出&#xff0c;5个引脚为输入模式&#xff0c;4个引…

如何屏蔽搜索结果特定网站?无限添加指定域名屏蔽解决方案

如何通过Chrome插件屏蔽某网站的搜索结果 在使用搜索引擎时&#xff0c;有时我们会希望屏蔽掉某些不想看到的网站。那么&#xff0c;我们可以通过安装油猴&#xff08;Tampermonkey&#xff09;插件&#xff0c;并使用特定脚本来实现这个目的。由于Chrome网上应用店可能无法打…

数据结构之“队列”(全方位认识)

&#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;数据结构 前言 上期博客介绍了” 栈 “这个数据结构&#xff0c;他具有先进后出的特点。本期介绍“ 队列 ”这个数据结构&#xff0c;他具有先进先出的特点。 目录…

ASCII码对照表【2024年汇总】

&#x1f37a;ASCII相关文章汇总如下&#x1f37a;&#xff1a; &#x1f388;ASCII码对照表&#xff08;255个ascii字符汇总&#xff09;&#x1f388;&#x1f388;ASCII码对照表&#xff08;Unicode 字符集列表&#xff09;&#x1f388;&#x1f388;ASCII码对照表&#x…