当前位置:首页 >热点 >RedisServer、RedisDB与数据字典Dict 使用C语言开发的数据高性能

RedisServer、RedisDB与数据字典Dict 使用C语言开发的数据高性能

2024-06-28 17:34:50 [百科] 来源:避面尹邢网

RedisServer、数据RedisDB与数据字典Dict

作者:编程技术之道 数据库 Redis 字典本文通过讲解 RedisServer、RedisDB与数据字典Dict之间的数据联系,同时通过分析Set指令(v7.0 版本目前有240个命令)的字典执行过程,可以对其底层原理有更深的数据认知。

1、字典关于Redis

众所周知Redis是数据流行的、开源的字典,使用C语言开发的数据高性能,基于内存的字典key/value数据库。它具有高效、数据精心设计的字典底层数据结构,同时支持多种数据类型(string、数据list、字典set、数据zset、hash、bitmap、geo、hyperloglog等),让其能够拥有100K+/s的读写性能。正是由于这些优势让它在众多数据库中脱颖而出,支撑着众多互联网公司的海量业务。

RedisServer、RedisDB与数据字典Dict 使用C语言开发的数据高性能

那么你有没有想过,它的底层是如何运作的?本文从RedisServer的底层结构入手,并通过追溯Set指令操作过程与key的过期时间窥探一下运行原理。

RedisServer、RedisDB与数据字典Dict 使用C语言开发的数据高性能

2、redisServer、redisDB与数据字典dict

Redis服务是常见的c/s架构设计,即:Redis client客户端通过与Redis Server服务端建立连接后对存储在Redis Server端的数据进行操作。Redis Server作为一个单独的进程运行在计算机上,其对数据进行操作的工作线程为单线程,减少了锁开销以及上下文的切换。

RedisServer、RedisDB与数据字典Dict 使用C语言开发的数据高性能

在Redis Server进程内部有一个全局变量redisServer,存储着当前Redis Server的所有数据库、key/value数据以及其他众多信息,在Redis Server完全启动并对外服务之前对其进行初始化、赋予默认值等操作,它是运行时的一个重要数据入口。

从上图可知,Redis Server默认共拥有(0-15,自定义最大为0-255)16个数据库(redisDB),每个数据库包含有若干数据字典(dict),每个数据字典存储不同意义的数据。例如:redisDb.dict 是存储当前数据库所有key/value的keyspace,redisDb.expires 是存储当前数据库所有设置了过期时间的keyspace。

查询数据时从数据字典 redisDb.dict 中获取,判断/获取key的过期时间等操作时从数据字典 redisDb.expires 中获取。每个数据字典存储数据时,考虑扩容等因素会有用2个 ht_table,在未扩容时数据全部存储在 ht_table[0],否则可能在 ht_table[0]与ht_table[1] 都存有数据,ht_table 使用 bucket+链表(不同key在经过hash计算之后发生碰撞,会存储在同一个bucket的链表中)的形式存储具体的key/value。

3、redis client如何与数据库建立联系

每当redis client客户端与Redis Server服务端建立连接之后,Redis Server为该客户端创建结构体 client 用于存储客户端相关信息,其中就包含客户端所使用的数据库(默认为0,可以通过select指令选择其他数据库)。然后Redis Server服务端通过双向链表把这些client连接起来,存储到全局变量redisServer的clients字段中。就这样redis client客户端与Redis数据库建立了联系,后续就能直接找到对应数据库进行读、写等操作。

每当redis client客户端发送命令到服务端之后,Redis Server通过 client.db 找到对应的数据库,然后进行相关操作。

4、Set指令执行过程

5、小结

本文通过讲解 redisServer、redisDB与数据字典dict之间的联系,同时通过分析Set指令(v7.0 版本目前有240个命令)的执行过程,可以对其底层原理有更深的认知。

曾经有一位技术大咖说过:若想学习一个好的开源项目,那么首推Redis,无论从代码功能、变量声明,甚至从注释来看都无可挑剔。

责任编辑:姜华 来源: 今日头条 RedisDB数据字典Dict

(责任编辑:时尚)

    推荐文章
    • 花呗升级和不升级区别在哪里 可用额度会增加吗?

      花呗升级和不升级区别在哪里 可用额度会增加吗?对于很多年轻人来说,无论是在线上的电商平台支付,还是在线下的实体商店支付,使用花呗都是一件比较平常的事情。有不少花呗用户都收到了花呗服务升级提示,花呗升级和不升级区别在哪里?花呗不升级还能用吗?花呗升 ...[详细]
    • 供应链称华为Mate 60系列已加单至1500万

      供应链称华为Mate 60系列已加单至1500万华尔街见闻从供应链独家获悉,Mate 60 Pro已加单至1500万-1700万台。此外,来自经销商的消息也显示,9月10日起,华为线下门店将全面销售Mate 60 Pro。此前,华为已经悄然推出Ma ...[详细]
    • 2023值得关注的125家AIGC企业闪亮发布!

      2023值得关注的125家AIGC企业闪亮发布!项目招商找A5 快速获取精准代理名单 今年年初,由现象级产品ChatGPT引发了AIGC浪潮,我们从中看到了人工智能技术给千行百业带来的巨大的应用潜力,也更加坚信这是一个值得长期深耕的赛道。由此,创业 ...[详细]
    • 英特尔i9

      英特尔i9爆料博主@wxnod就带来了下代旗舰处理器i9-14900K ES版本的CPU-Z信息以及跑分。英特尔将于本月举办今年的“Intel Innovation”峰会,预计将会带来第14代酷睿处理器,也就是 ...[详细]
    • 服务在非矿企出运需求 中远海运首次“集改散”业务圆满完成

      服务在非矿企出运需求  中远海运首次“集改散”业务圆满完成近日,中远海运特运杜鹃松轮历经一个月航程,运送紫金矿业1万吨铜精矿抵达防城港,这标志着中远海运(非洲)有限公司服务在非矿企,首次“集改散”业务圆满完成。过去两年来,全球产业链供 ...[详细]
    • AIGC:BAT、抖快的新掘金口?

      AIGC:BAT、抖快的新掘金口?项目招商找A5 快速获取精准代理名单 AI辅助绘画估值超十万?12月28日,山东人民出版社看中一位4岁女孩用百家号AI作画创作的AI绘本《超能外星战队》,认为该画价值超十万元且有出版意向。与此同时,& ...[详细]
    • Q1手机销量增长41%,华为P60、Mate X3凭什么?

      Q1手机销量增长41%,华为P60、Mate X3凭什么?618华为官方开启了夏日优惠活动,华为P60系列至高限时优惠1000元,至高享24期分期免息,如果有需要的朋友不妨可以考虑一下这部凝聚华为智慧的机型。Canalys调研数据显示,2023年Q1,在中国 ...[详细]
    • 镂空合金超跑 雷柏VT960S屏显双模游戏鼠标到手仅239元

      镂空合金超跑 雷柏VT960S屏显双模游戏鼠标到手仅239元雷柏VT960S屏显双模无线RGB游戏鼠标不但使用体验出众,在个性化彰显上也是相当不错,相当值得推荐。雷柏V+无线游戏技术,产品力、品牌力,硬实力。原相3370光学引擎加持、1毫秒响应速度、至高125 ...[详细]
    • 分期乐提前还款利息的计算方式是怎样的 分期乐分36期可以提前还款吗?

      分期乐提前还款利息的计算方式是怎样的 分期乐分36期可以提前还款吗?人们在日常生活中,遇见比较缺钱或者手头资金不足的时候,就会想到去申请一笔借款。有些人会选择求助亲朋好友,有些人则会选择一些网络上的贷款平台。分期乐提前还款利息怎么算?分期乐分36期可以提前还款吗?分期 ...[详细]
    • 2023值得关注的125家AIGC企业闪亮发布!

      2023值得关注的125家AIGC企业闪亮发布!项目招商找A5 快速获取精准代理名单 今年年初,由现象级产品ChatGPT引发了AIGC浪潮,我们从中看到了人工智能技术给千行百业带来的巨大的应用潜力,也更加坚信这是一个值得长期深耕的赛道。由此,创业 ...[详细]
    热点阅读