Redis的数据类型到底有什么奥秘

这里我们先只介绍五种常用的数据类型~

目录

1、string

2、hash

3、list

4、set

5、zset

6、示例


1、string

  • 数据类型:string
  • 内部编码:raw、int、embstr

        说明: raw是最基本的字符串--底层是一个char数组(此处的char是一个字节的);int是redis中通常用来实现计数功能时,也就是当value为一个整数时,可能redis会直接使用int来保存;embstr专门针对短字符串进行特殊优化处理


2、hash

  • 数据类型:hash
  • 内部编码:hashtable、ziplist

        说明:hashtable就是redis内部哈希表的一个实现;ziplist在哈希表里面元素比较少的时候可能就是优化成ziplist,压缩了列表,能够节省空间~

        为啥要进行压缩呢?redis上有很多的key,可能是某些key的value是hash,当key特别多,对应的hash也特别多,但是每个hash又不大的情况下,就尽量去压缩,压缩之后就可以让整体占用的内存更小了~ 


3、list

  • 数据类型:list
  • 内部编码:linkedlist、ziplist

        说明:linkedlist就是一个链表;ziplist同上,压缩列表;从redis3.2开始,引入了新的实现方式:quicklist, quicklist就是一个链表,而他的每一个元素又是一个ziplist,这样做能够同时兼顾linkedlist和ziplist的优点,把空间和效率都能够兼顾到~


4、set

  • 数据类型:set
  • 内部编码:hashtable、inset

        说明:hashtable同上述的hashtable;inset集合中存的都是整数


5、zset

  • 数据类型:zset 
  • 内部编码:skiplist、ziplist

        说明:skiplist:跳表 ,同普通链表不同的是每个节点有多个指针域,能够巧妙的搭配这些指针域的指向,就可以做到~从跳表上查询元素的时间复杂度为O(logN)

        上述redis的数据类型中,具体使用哪种编码方式,我们是感知不到的,redis内部都是自适应的~


6、示例

命令:

  • 查看数据类型:type key
  • 查看内部编码方式:object encoding key

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

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

相关文章

阿里内部绝密资料——亿级并发系统架构设计(2023版)

俗话说:罗马不是一天建成的,系统的设计当然也是如此。 从原来谁都不看好的淘宝到现在的电商巨头,展现的不仅仅是一家互联网巨头的兴起,也是国内互联网行业迎来井喷式发展的历程,网络信号从 2G 发展到现在的 5G 通信&a…

07-ThreadLocal有哪些使用场景?【Java面试题总结】

ThreadLocal有哪些使用场景? 7.1 多线程场景下共享变量问题 ThreadLocal是线程本地变量,可以存储共享变量副本,每一个独立线程都有与共享变量一模一样的副本。ThreadLocal在当前线程下共享变量是全局共享的,各个线程之间是相互独…

Unity2D实现左右移动的敌人角色

文章目录 环境与角色创建敌人角色 敌人脚本检测前方是否有地面获取检测点检测地面 完整代码运行结果其他文章 环境与角色 创建敌人角色 简单起见,突出脚本的内容,我们就只创建一个圆形用来当做当前的敌人角色。 为分清左右,我们再为敌人角色…

Docker使用数据卷挂载进行数据存储与共享

一、挂载和数据卷 在 Docker 中,挂载(Mounting)和数据卷(Data Volumes)是用于在容器和宿主机之间共享数据的机制。 挂载:将宿主机文件系统中的目录或文件与容器中的目录或文件进行关联的过程。数据卷&…

Jenkins java8安装版本安装

一、首先准备Jenkins、Jdk8、Tomcat9安装包 根据Jenkins官网介绍,Jenkins支持Java8的版本如下: 我们选择2.164版本进行安装,根据版本号支持输入下载地址:https://archives.jenkins.io/war/2.164/jenkins.war,进行下载…

软件测试|Python自动化测试实现的思路

Python自动化测试常用于Web应用、移动应用、桌面应用等的测试 Python自动化实现思路通常分为以下几步: 1. 确定自动化测试的范围和目标: 首先需要明确需要进行自动化测试的范围和目标,包括测试场景、测试用例、测试数据等。 2. 选择自动化…

【知网检索稳定】第三届社会发展与媒体传播国际学术会议(SDMC 2023)

第三届社会发展与媒体传播国际学术会议(SDMC 2023) 2023 3rd International Conference on Social Development and Media Communication 第三届社会发展与媒体传播国际学术会议 (SDMC 2023)将于2023年11月03-05日在中国杭州召开。会议主题主要围绕社会…

博物学欣赏

自文艺复兴以降,西方开启发现世界的旅程。 这些东西对于科学、地理学、考古学、探险、旅游学、博物学、绘画学、美学无疑有着至高无上的借鉴价值。我们今天出版这些图文并茂的书籍有如斯高远的志向和目标: 展现自然的历史风貌 呈现万物的生态原样 复现…

Unittest自动化测试框架vs Pytest自动化测试框架

引言   前面一篇文章Python单元测试框架介绍已经介绍了python单元测试框架,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平台也是可以的。而这篇文章…

Java作业3

1.下面代码的运行结果是(C) public static void main(String[] args){String s;System.out.println("s"s);}A.代码编程成功,并输出”s” B.代码编译成功,并输出”snull” C.由于String s没有初始化,代码不…

微信小程序 通过响应式数据控制元素class属性

我想大家照这个和我最初的目的一样 希望有和vue中v-bind:class一样方便的指令 但答案不太尽人意 这里 我们只能采用 三元运算符的形式 参考代码如下 <view class"item {{ userId item.userId ? isThisUser : }}"> </view>这里 我们判断 如果当前ite…

SSRF漏洞复现(redis)

文章目录 启动环境漏洞复现探测存活IP和端口服务计划任务反弹shell 前提条件&#xff1a; 1.安装docker docker pull medicean/vulapps:j_joomla_22.安装docker-compose docker run -d -p 8000:80 medicean/vulapps:j_joomla_23.下载vulhub 安装环境已完成&#xff0c;故此省略…