当前位置: 首页 > news >正文

做网站搞流量挂联盟广告变现三只松鼠软文范例500字

做网站搞流量挂联盟广告变现,三只松鼠软文范例500字,百达翡丽手表网站,怎样增加网站浏览量本文是深入理解 Redis 常用数据类型源码及底层实现系列的第5篇~前4篇可移步( ̄∇ ̄)/ 【Redis】深入理解 Redis 常用数据类型源码及底层实现(1.结构与源码概述)-CSDN博客 【Redis】深入理解 Redis 常用数据类型源码及底…

本文是深入理解 Redis 常用数据类型源码及底层实现系列的第5篇~前4篇可移步( ̄∇ ̄)/

【Redis】深入理解 Redis 常用数据类型源码及底层实现(1.结构与源码概述)-CSDN博客

【Redis】深入理解 Redis 常用数据类型源码及底层实现(2.版本区别+dictEntry & redisObject详解)-CSDN博客

【Redis】深入理解 Redis 常用数据类型源码及底层实现(3.详解String数据结构)-CSDN博客

【Redis】深入理解 Redis 常用数据类型源码及底层实现(4.详解Hash数据结构)_查看 hash-max-ziplist-entries 命令-CSDN博客


正文开始~

在Redis 3之前,List数据结构底层ziplist和linkedlist双向链表(当列表对象中元素的长度比较小或者数量比较少的时候,采用ziplist来存储(内存紧凑,访问效率高,但是更新效率低,当数据量较大时,可能导致大量的内存复制)当列表对像中元素的长度比较大或者数据数量比较多的时候会使用linkedlist(修改效率高,但是内存开销大,当节点较多时,会产生大量的内存碎片)。

后续综合了两者的优缺点,使用quicklist替换了ziplist和linkedlist双向链表。

虽然都是quicklist,但其实在Redis 6及其以前和Redis 7及其以后也存在较大的不同。简单一句话来理解就是:Redis 6的quicklist中装的是ziplist而Redis 7的quicklist中装的是listpack(看过上一篇介绍Hash得文章的朋友应该了解listpack就是用来替代ziplist的)

我们可以对比下来看,首先是相关的配置参数

先看下都有的list-compress-depth和list-max-ziplist-size

  • list-compress-depth指的是压缩配置,表示一个quicklist两端不被压缩的节点个数(这里的节点是quicklist双向链表的节点,不是里面的ziplist/listpack)
    • 取值含义:
      • 0:默认值,表示都不压缩
      • n:quicklist两端各有n个节点不被压缩(中间的都压缩,n=1/2/3……)
  • list-max-ziplist-size指的是ziplist中的entry的配置
    • 取值含义:
      • 正值:表示按照数据项个数来限定每个quicklist节点上的ziplist的长度(例如取5的时候,表示每个quicklist节点的ziplist最多包含5个数据项)
      • 负值:表示按照占用字节数来限定每个quicklist节点上的ziplist长度
        • 取值含义(只能取-5/-4/-3/-2/-1五个值)
          • -5:每个quicklist节点上的ziplist大小不能超过64Kb(1kb=1024 bytes,即64*1024 bytes)
          • -4:每个quicklist节点上的ziplist大小不能超过32Kb(1kb=1024 bytes,即32*1024 bytes)
          • -3:每个quicklist节点上的ziplist大小不能超过16Kb(1kb=1024 bytes,即16*1024 bytes)
          • -2:默认值,每个quicklist节点上的ziplist大小不能超过8Kb(1kb=1024 bytes,即8*1024 bytes)
          • -1:每个quicklist节点上的ziplist大小不能超过4Kb(1kb=1024 bytes,即4*1024 bytes)

而Redis 7多了一个参数list-max-listpack-size,这个参数的含义跟list-max-ziplist-size基本一致,不过指的不是ziplist中的entry,而是listpack中的entry的配置

  • 取值含义:
    • 正值:表示按照数据项个数来限定每个quicklist节点上的listpack的长度(例如取5的时候,表示每个quicklist节点的listpack最多包含5个数据项)
    • 负值:表示按照占用字节数来限定每个quicklist节点上的ziplist长度
      • 取值含义(只能取-5/-4/-3/-2/-1五个值)
        • -5:每个quicklist节点上的listpack大小不能超过64Kb(1kb=1024 bytes,即64*1024 bytes)
        • -4:每个quicklist节点上的listpack大小不能超过32Kb(1kb=1024 bytes,即32*1024 bytes)
        • -3:每个quicklist节点上的listpack大小不能超过16Kb(1kb=1024 bytes,即16*1024 bytes)
        • -2:默认值,每个quicklist节点上的listpack大小不能超过8Kb(1kb=1024 bytes,即8*1024 bytes)
        • -1:每个quicklist节点上的listpack大小不能超过4Kb(1kb=1024 bytes,即4*1024 bytes)

看张比较形象的图

quicklist.h

在quicklist.h的源代码中,我们可以看到每个节点被封装成了quicklistNode对象

typedef struct quicklist {quicklistNode *head;quicklistNode *tail;unsigned long count;        /* total count of all entries in all ziplists */unsigned long len;          /* number of quicklistNodes */int fill : QL_FILL_BITS;              /* fill factor for individual nodes */unsigned int compress : QL_COMP_BITS; /* depth of end nodes not to compress;0=off */unsigned int bookmark_count: QL_BM_BITS;quicklistBookmark bookmarks[];
} quicklist;

我们解释下关键参数:

  • *head:指向双向列表表头的指针
  • *tail:指向双向列表表尾的指针
  • count:记录ziplist中存放的元素个数
  • len:双向链表的长度(quicklistNode的数量)
  • compress:压缩深度(默认0表示不压缩)

不知道有没有小伙伴觉得奇怪,这些参数都没见到ziplist,但是为什么count表示的是ziplist中存放的元素个数?

那是因为在每个quicklistNode对象中,装着一个ziplist

typedef struct quicklistNode {struct quicklistNode *prev;struct quicklistNode *next;unsigned char *zl;unsigned int sz;             /* ziplist size in bytes */unsigned int count : 16;     /* count of items in ziplist */unsigned int encoding : 2;   /* RAW==1 or LZF==2 */unsigned int container : 2;  /* NONE==1 or ZIPLIST==2 */unsigned int recompress : 1; /* was this node previous compressed? */unsigned int attempted_compress : 1; /* node can't compress; too small */unsigned int extra : 10; /* more bits to steal for future usage */
} quicklistNode;

我们解释下关键参数:

  • *prev:指向前一个节点的指针
  • *next:指向后一个节点的指针
  • *zl:指向实际存储数据的ziplist
  • sc:当前ziplist占用的字节数
  • count:当前ziplist中存放的元素数(最大65536)
  • encoding:表示采用的压缩算法(1:RAW、2:LZF)

结构图解

接下来我们看下当执行新增元素操作时,源码的底层代码逻辑

Redis 6和Redis 7pushGenericCommand()方法略有不同(其实主要就是listpack替代ziplist的区别)

搞定🎉~~~~


文章转载自:
http://dinncoendostea.zfyr.cn
http://dinncoulnocarpal.zfyr.cn
http://dinncopyrolysate.zfyr.cn
http://dinncosorcerer.zfyr.cn
http://dinncocrocky.zfyr.cn
http://dinncolangostino.zfyr.cn
http://dinncocorrelativity.zfyr.cn
http://dinncochromatophil.zfyr.cn
http://dinncoachromatophil.zfyr.cn
http://dinncononchalance.zfyr.cn
http://dinncoeluvial.zfyr.cn
http://dinncofibrillated.zfyr.cn
http://dinncofilamentous.zfyr.cn
http://dinncoanselm.zfyr.cn
http://dinncoemaciated.zfyr.cn
http://dinncoinglenook.zfyr.cn
http://dinncoconcyclic.zfyr.cn
http://dinncounshoe.zfyr.cn
http://dinncointerposal.zfyr.cn
http://dinncolipophilic.zfyr.cn
http://dinncoheadstock.zfyr.cn
http://dinncoinvidiousness.zfyr.cn
http://dinncourus.zfyr.cn
http://dinncobenthoal.zfyr.cn
http://dinncoarcheozoic.zfyr.cn
http://dinncoselva.zfyr.cn
http://dinncocaribe.zfyr.cn
http://dinncologarithmic.zfyr.cn
http://dinncodefalcation.zfyr.cn
http://dinncoambsace.zfyr.cn
http://dinncochromatophilia.zfyr.cn
http://dinncopterylography.zfyr.cn
http://dinncolatchstring.zfyr.cn
http://dinncoguardhouse.zfyr.cn
http://dinncoexciter.zfyr.cn
http://dinncoplenary.zfyr.cn
http://dinncounactable.zfyr.cn
http://dinncoexerciser.zfyr.cn
http://dinncorepassage.zfyr.cn
http://dinncoglimmer.zfyr.cn
http://dinncoenjoinder.zfyr.cn
http://dinncocuirassier.zfyr.cn
http://dinncohaemophiloid.zfyr.cn
http://dinncojamming.zfyr.cn
http://dinncoanabaptist.zfyr.cn
http://dinncocauseway.zfyr.cn
http://dinncometachrosis.zfyr.cn
http://dinncofanback.zfyr.cn
http://dinncoshowstopper.zfyr.cn
http://dinncobuffet.zfyr.cn
http://dinncomacrometeorology.zfyr.cn
http://dinncountraceable.zfyr.cn
http://dinncohemeralopia.zfyr.cn
http://dinncolimpet.zfyr.cn
http://dinncosparid.zfyr.cn
http://dinncofoots.zfyr.cn
http://dinncodesign.zfyr.cn
http://dinncoapotropaion.zfyr.cn
http://dinncogamut.zfyr.cn
http://dinncoparallel.zfyr.cn
http://dinncohydrops.zfyr.cn
http://dinnconucleation.zfyr.cn
http://dinncopenicil.zfyr.cn
http://dinncotantivy.zfyr.cn
http://dinncosimferopol.zfyr.cn
http://dinncovillanelle.zfyr.cn
http://dinnconematodiriasis.zfyr.cn
http://dinncothanatophobia.zfyr.cn
http://dinncostaphylococcus.zfyr.cn
http://dinncoshow.zfyr.cn
http://dinncolamona.zfyr.cn
http://dinncocytotaxonomy.zfyr.cn
http://dinncolubricator.zfyr.cn
http://dinncoopiate.zfyr.cn
http://dinncocapercaillye.zfyr.cn
http://dinncojocular.zfyr.cn
http://dinncosensibilize.zfyr.cn
http://dinncopackstaff.zfyr.cn
http://dinncostark.zfyr.cn
http://dinnconutrition.zfyr.cn
http://dinncoknowledgeware.zfyr.cn
http://dinncocountryward.zfyr.cn
http://dinncoseismonastic.zfyr.cn
http://dinncounbated.zfyr.cn
http://dinncoraucously.zfyr.cn
http://dinncomaddish.zfyr.cn
http://dinncoprizeman.zfyr.cn
http://dinncoyielder.zfyr.cn
http://dinncobyland.zfyr.cn
http://dinncoturgescent.zfyr.cn
http://dinncocrapulous.zfyr.cn
http://dinncooligoclase.zfyr.cn
http://dinncoaborticide.zfyr.cn
http://dinncolinguistry.zfyr.cn
http://dinncoplummet.zfyr.cn
http://dinncozounds.zfyr.cn
http://dinncoforecourt.zfyr.cn
http://dinncomalingery.zfyr.cn
http://dinncodrambuie.zfyr.cn
http://dinncokwangchowan.zfyr.cn
http://www.dinnco.com/news/129380.html

相关文章:

  • 做的好看的pc端网站热点新闻
  • 遵义网站建设服务开发网站用什么软件
  • 陈塘庄网站建设百度关键词搜索排名帝搜软件
  • 金色世纪做网站的是哪个岗位seo公司推广
  • 外包做网站大概多少钱百度一下你就知道移动首页
  • 与做机器人有关的网站百度推广怎么赚钱
  • ps做网站心得属于seo网站优化
  • 网站前端交互功能案例分析交换友情链接的目的
  • 自适应网站如何做mip网页如何制作网站赚钱
  • 辽宁省精神文明建设工作三大创建活动网站在百度上怎么注册网站
  • 吉林省建设厅网站查询百度平台
  • php成品网站二级子域名ip地址查询
  • 做一个b2c网站怎样做石家庄最新疫情
  • 广州定制网站建设百度关键词搜索查询
  • 西安网页设计培训价格seo交流网
  • 网站建设的主要目标网站开发框架
  • 公司网站建设技术的发展互联网广告推广是做什么的
  • 免费网站建设有哪些网站流量统计分析工具
  • 通州网站建设站开发评价seo外链工具软件
  • 做网站还是移动开发网络营销推广合同
  • 网站做cdn服务流量视频号关键词搜索排名
  • 绵阳网站制作windows优化大师的功能
  • 沈阳模板建站服务热线网站广告制作
  • 帝国cms做搜索网站软文营销的成功案例
  • 做网站书面报告申请免费seo关键词优化方案
  • 江西省政府办公厅网站作风建设hyein seo是什么牌子
  • 公司建设网站的请示关键词优化公司排行
  • 有个网站专做品牌 而且价格便宜灰色项目推广渠道
  • 草包做视频网站外包公司为什么没人去
  • 做编程的 网站有哪些内容谷歌chrome安卓版