Redis第八讲 Redis之Hash底层数据结构实现

news/2024/11/14 19:43:09/

Hash底层数据结构

Hash 数据结构底层实现为一个字典( dict )哈希表,也是RedisBb用来存储K-V的数据结构,Redis内存数据库,最底层是一个redisDb;字典中的每一项,使用dictEntry ,代表KV键值;类似于HashMap中的键值对Entry。dict是一种用于维护key和value映射关系的数据结构,与很多编程语言中的Map类似。

关于Redis存储模型结构可以参考我的这篇博客:Redis第七讲 Redis存储模型详解

Dict的效率高表现在哪里?

因为dict/map实现了key和value的映射,通过key查询value是效率非常高的操作,时间复杂度是O(c),C是常数,在没有冲突/碰撞的情况下,可以达到O(1)。

dict本质上是为了解决算法中的查找问题(Searching),一般查找问题的解法分为两个大类:一个是基于各种平衡树,一个是基于哈希表。

  • 平衡树,如二叉搜索树、红黑树,使用的是“二分思想”;如果需要实现排序,则可使用平衡树,如:用大顶堆实现TreeMap;
  • 哈希表,如Java中的Map,Python中的字典dict,使用的是“映射思想”;

我们平常使用的各种Map或dict,大都是基于哈希表实现的。在不要求数据有序存储,且能保持较低的哈希值冲突概率的前提下࿰


http://www.ppmy.cn/news/39806.html

相关文章

【微信小程序-原生开发】系列教程目录(已完结)

01-注册登录账号,获取 AppID、下载安装开发工具、创建项目、上传体验 https://sunshinehu.blog.csdn.net/article/details/128663679 02-添加全局页面配置、页面、底部导航 https://sunshinehu.blog.csdn.net/article/details/128705866 03-自定义底部导航&#x…

Point-NeRF总结记录

渲染可以理解为三维模型或场景转换成二维图像的过程,广泛应用于电影、虚拟现实、建筑和产品设计等领域。在计算机图形学中,渲染通常指的是使用计算机程序对三维场景进行可视化的过程。假如游戏中的场景有一个3d模型、一个摄像机和光源,渲染要…

chatGPT写文章提问词-chatGPT生成论文要多久

让ChatGPT写评论文章 好的,下面是一篇由 ChatGPT 撰写的评论文章: 题目:《流浪地球》:中国科幻电影的里程碑 《流浪地球》是一部改变了中国电影市场的重要电影,它迎来了一个新时代的中国科幻电影。这部电影吸引了众…

分布式系统容灾部署方案

本文主要以OceanBase部署来说明分布式系统容灾部署方案 分布式系统提供持续可用的服务尤为重要。 好的分布式系统根据需求提供不同等级的的高可用与容灾级别。 而在分布式系统中,数据库系统又是最核心最关键的系统。 我们以数据库分布式系统为主,考虑…

MongoDB 查询文档(1)

一、查询语法 本篇我们主要讲解在集合或视图中查询文档,首先说明一下查询的语法: db.collection.find(query, projection, options) 此定义可以从集合或者视图中查找文档并返回一个游标(cursor); 参数 query: 此选项可选,用于…

局域网(LAN),广域网(WAN)和互联网

网络异同 局域网(LAN),广域网(WAN)和互联网是计算机网络的三种类型,它们之间有以下的区别和相同点: 相同点: 它们都是计算机网络的类型。 它们都可以让计算机之间进行数据交换和通…

Java IO常用操作详解(代码示例)

概览 Java I/O操作指的是数据的输入/输出操作。 Java的I/O操作类在java.io包中,主要分以下几种: 基于字节操作的I/O接口: InputStream和OutputStream基于字符操作的I/O接口: Writer和Reader基于磁盘操作的I/O接口: …

【多线程与高并发(锁)】1、锁的概念、分类和状态

1、锁的概念 java当中的锁、是在多线程环境下为保证共享资源健康、线程安全的一种手段。 线程操作某个共享资源之前,先对资源加一层锁,保证操作期间没有其他线程访问资源,当操作完成后,再释放锁。 2、锁的分类 Java中的锁按照…