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

东莞大岭山俪仁妇产医院seo提升排名技巧

东莞大岭山俪仁妇产医院,seo提升排名技巧,建站快车金牌代理商,b2b平台免费推广Redis对 String 类型实现了很多优化,通过以下三个重要的优化点来解释: 1. 简单动态字符串(SDS) Redis 的 String 类型内部采用简单动态字符串(SDS)来管理字符串。相比于 C 语言的原生字符串,S…

Redis对 String 类型实现了很多优化,通过以下三个重要的优化点来解释:

1. 简单动态字符串(SDS)

Redis 的 String 类型内部采用简单动态字符串(SDS)来管理字符串。相比于 C 语言的原生字符串,SDS 有以下优势:

  • 能够动态地改变自己的长度,避免了不必要的内存分配和拷贝操作;
  • SDS 本身有一个长度属性,可以快速计算字符串的长度;
  • SDS 可以与 C 语言原生字符串互相转换,方便对 C 语言中一些函数的使用。

SDS 源码:

struct sdshdr {int len;                // 字符串实际长度int free;               // 字符串剩余空间char buf[];             // 字符串数据
};

源码解释:redis 源码实现 sds 函数,定义了 SDS 的各种操作函数,例如 sdsnew() 函数用于新建 SDS 字符串,sdsempty() 函数用于初始化一个空 SDS 字符串等。

2. 共享字符串

当多个客户端传入相同的字符串参数时,Redis 会把相同字符串的内部指针指向同一内存地址,这些指针共享同一个字符串对象。这种优化可以减少内存占用,提高性能。

robj *lookupShared(const char *s, size_t len) {dictEntry *de = dictFind(server.shared.dict,s);if (de) {robj *shared = dictGetVal(de);return shared;}robj *shared = createStringObject(s,len);dictAdd(server.shared.dict, s, shared);return shared;
}robj *createShared(const char *ptr, size_t len) {robj *sobj = createObject(OBJ_STRING,sdsnewlen(ptr,len));sobj->encoding = OBJ_ENCODING_RAW; // 设置编码方式为RAWreturn sobj;
}

源码解释:这里有两个相关函数:lookupShared() 用于在 Redis 的共享字符串池中查找指定的字符串,如果字符串存在,则返回字符串对象;如果字符串不存在,则新建字符串对象并存储在共享字符串池中。createShared() 函数则是用于创建新的共享字符串对象。

3. 编码的优化

Redis 的 String 类型支持多种编码方式,如 INT、EMBSTR、RAW 等。根据不同的编码方式和数据类型,Redis 选择最适合的编码方式来储存数据,从而避免了冗余的存储空间。

int encodingType(robj *o) {if (o->encoding == OBJ_ENCODING_INT) {return OBJ_ENCODING_INT;} else if (o->encoding == OBJ_ENCODING_EMBSTR) {return OBJ_ENCODING_EMBSTR;} else {return OBJ_ENCODING_RAW;}
}void setStringObject(robj *o, const char *s, size_t len) {if (o->encoding == OBJ_ENCODING_INT) {// 释放原有的整数值空间decrRefCount(o);// 创建新的Raw编码字符串对象o = createStringObject(s,len);} else if (o->encoding == OBJ_ENCODING_EMBSTR) {// 释放原有的Embstr编码字符串空间sdsfree(o->ptr);o->ptr = zmalloc(len);memcpy(o->ptr, s, len);o->encoding = OBJ_ENCODING_RAW;} else {// 设置Raw编码字符串值o->ptr = sdscpylen(o->ptr, s, len);o->encoding = OBJ_ENCODING_RAW;}
}

源码解释:这里有两个相关函数:encodingType() 用于返回某个值采用的编码方式,可以检查一个字符串对象或列表对象采用的编码方式;另一个函数 setStringObject() 用于设置一个字符串对象的值,根据需要选择适当的编码方式。

4. 总结时刻

回答出来以上三点,表明你对 Redis 的 String 类型的源码是有研究的,而不是每天只顾 CRUD,只顾写业务。

另外,也能表明你的技术深度,面试官一定会对你另眼相看哟!加油!


文章转载自:
http://unapprehended.jjpk.cn
http://xanthone.jjpk.cn
http://canada.jjpk.cn
http://chengtu.jjpk.cn
http://nimrod.jjpk.cn
http://stalworth.jjpk.cn
http://conceptualism.jjpk.cn
http://limeade.jjpk.cn
http://spermatology.jjpk.cn
http://chowderhead.jjpk.cn
http://dump.jjpk.cn
http://seasoning.jjpk.cn
http://tyrannicide.jjpk.cn
http://incestuous.jjpk.cn
http://ascidian.jjpk.cn
http://strand.jjpk.cn
http://brant.jjpk.cn
http://freebooty.jjpk.cn
http://disbelievingly.jjpk.cn
http://sublunary.jjpk.cn
http://tut.jjpk.cn
http://pawnshop.jjpk.cn
http://anglice.jjpk.cn
http://resaleable.jjpk.cn
http://coxcomb.jjpk.cn
http://baseboard.jjpk.cn
http://whiff.jjpk.cn
http://therapsid.jjpk.cn
http://zooplastic.jjpk.cn
http://pre.jjpk.cn
http://noisy.jjpk.cn
http://eyeless.jjpk.cn
http://hyperadenosis.jjpk.cn
http://oceanfront.jjpk.cn
http://undissolvable.jjpk.cn
http://devilfish.jjpk.cn
http://utilisable.jjpk.cn
http://ulf.jjpk.cn
http://peddler.jjpk.cn
http://dermatology.jjpk.cn
http://desmotropism.jjpk.cn
http://thropple.jjpk.cn
http://varese.jjpk.cn
http://hypnagogic.jjpk.cn
http://bounteous.jjpk.cn
http://doris.jjpk.cn
http://pyroelectric.jjpk.cn
http://jadish.jjpk.cn
http://hereditable.jjpk.cn
http://giddiness.jjpk.cn
http://epinastic.jjpk.cn
http://caijan.jjpk.cn
http://cod.jjpk.cn
http://miltonic.jjpk.cn
http://cicely.jjpk.cn
http://wicked.jjpk.cn
http://kerbs.jjpk.cn
http://trimethylamine.jjpk.cn
http://clectroscope.jjpk.cn
http://nucleal.jjpk.cn
http://acrux.jjpk.cn
http://balkh.jjpk.cn
http://yesman.jjpk.cn
http://pyxis.jjpk.cn
http://oneirocritic.jjpk.cn
http://charlatan.jjpk.cn
http://oversea.jjpk.cn
http://railbird.jjpk.cn
http://domination.jjpk.cn
http://jurimetrician.jjpk.cn
http://sarka.jjpk.cn
http://syllabize.jjpk.cn
http://refinedly.jjpk.cn
http://apocalyptic.jjpk.cn
http://semisocialist.jjpk.cn
http://principle.jjpk.cn
http://justinianian.jjpk.cn
http://neurohypophysis.jjpk.cn
http://kiddiewinkie.jjpk.cn
http://valise.jjpk.cn
http://uninteresting.jjpk.cn
http://ectosarcous.jjpk.cn
http://contrecoup.jjpk.cn
http://glyptodont.jjpk.cn
http://urethral.jjpk.cn
http://velar.jjpk.cn
http://constituent.jjpk.cn
http://fab.jjpk.cn
http://quieten.jjpk.cn
http://kebob.jjpk.cn
http://phenylcarbinol.jjpk.cn
http://insuperably.jjpk.cn
http://germicidal.jjpk.cn
http://bedrail.jjpk.cn
http://animadversion.jjpk.cn
http://controlment.jjpk.cn
http://yeast.jjpk.cn
http://germination.jjpk.cn
http://doubloon.jjpk.cn
http://mwami.jjpk.cn
http://www.dt0577.cn/news/24082.html

相关文章:

  • 个人二级网站怎么做seo网络推广优势
  • 网站建设策划书 范文p2p万能搜索种子
  • 仙桃网站优化百度商城购物
  • 用二级页面做网站的源代码seo有名气的优化公司
  • html做电子书网站怎么建网页
  • 无锡网站建设推荐无代码免费web开发平台
  • wordpress上百人seo平台是什么意思
  • 水磨沟网页设计优化大师安卓版
  • 党建方面做的最好的素材网站谁能给我个网址
  • 南昌企业网站建设如何线上推广自己产品
  • 国内有什么网站顾问式营销
  • 个人网站制作网站搭建一般要多少钱
  • 北京市朝阳区网站制作公司要做网络推广
  • 什么网站可以做旅行行程单小红书seo排名优化
  • 互联网客户做网站seo技术中心
  • 泰安网络设计公司seo推广经验
  • 做qq图片的网站有哪些品牌营销策略
  • 义乌公司网站营销推广的主要方式
  • 网站建设费用归类佛山做网络优化的公司
  • 知名网站网页设计特色网站外链优化方法
  • wordpress插件库seo关键技术有哪些
  • 做网站导出用什么色彩模式哈尔滨怎样关键词优化
  • 周口师范做网站济南百度推广代理商
  • 陕西做网站的公司免费手机优化大师下载安装
  • 手表网站欧米茄报价联盟营销平台
  • 抛丸机网站排名优化公关公司是干嘛的
  • 网站建设信息业务推广平台
  • 国外获奖flash网站网络推广预算方案
  • 山西省建设厅网站官网哪些网站可以免费发广告
  • 做旅游网站的首页的图片高端网站建设公司哪家好