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

唐山百度网站建设如何把网站推广出去

唐山百度网站建设,如何把网站推广出去,两个相同的网站对做优化有帮助,如何在电脑里做网站1、链表 其实个人感觉redis的链表内容和其他的差不多。就是一个listNode结构,里面又指向前置节点和后置节点的指针。 然后redis链表可以保存各种不同类型的值。 链表被广泛用于实现redis的各种功能,比如列表键、发布与订阅、慢查询、监视器等。 2、字典…

1、链表

其实个人感觉redis的链表内容和其他的差不多。就是一个listNode结构,里面又指向前置节点和后置节点的指针。
然后redis链表可以保存各种不同类型的值。
链表被广泛用于实现redis的各种功能,比如列表键、发布与订阅、慢查询、监视器等。

2、字典

字典又称为符号表、关联数组、映射。是一种保存键值对的抽象数据结构。从作用上来说,我理解就是java 里面的hashMap。
在redis中被广泛用于实现各种功能,其中包括数据库和字段。

2.1、字典的底层实现

字典底层实现是哈希表,哈希表里面又包含哈希表节点。

2.1.1 哈希表

哈希表结构定义如下:

typedef struct dictht{//哈希表数组dictEntry **table;//哈希表大小unsigned long size;//哈希表大小掩码,用于计算索引值//总是等于size-1unsigned long sizemask;//该哈希表已有的节点的数量unsigned long used;
}dictht;

其中table 属性是一个数组,每个元素的类型是 dictEntry。每个dictEntry 保存一个键值对。

2.1.2 哈希表节点

用dictEntry 表示。

typedef struct dictEntry {//键void *key;//值union{void *val;uint64_t u64;int64_t s64;} v;//指向下个哈希表节点,形成链表struct dictEntry *next;
}dictEntry ;

key保存键, v保存值。值可以是uint64_t 或者 int64_t 整数。
next指向另一个哈希表节点的指针,用来解决hash冲突。(是不是和java里面的hashmap很像呀~)

2.1.3 字典

redis中的字典结构如下:

typedef struct dict {//类型特定函数dictType *type;//私有数据void *privdata;//哈希表dictht ht[2];//rehash索引//当rehash不在进行时,值为-1int rehashidx;
}dict ;

type属性和privdata属性,为创建多态字典而设置。不用管,一般不用了解。
ht属性是一个数字,长度为2,类型是dictht,就是哈希表。ht[0]的哈希表平时会用到;h[1]的哈希表只有在对h[0]进行rehash时才会用到。另外还有rehashidx也和rehash有关。

2.2、哈希算法

其实就是根据key计算hash值和索引值,然后根据索引值把新的键值对的哈希表节点放到哈希表对应的位置上,
Redis使用MurmurHash2算法计算哈希值。
那么关键的问题来了,如何解决键冲突?

2.3、解决键冲突

两个或两个以上的键分配到同一个索引上面,如何解决?
redis采用链地址法。节点有next指针,能成为一条链。采用头插法。

2.4、rehash

哈希表中的键值对可能新增或者减少,那么表的容量也需要随之调整。

2.4.1、rehash何时对哈希表执行rehash操作?

扩展操作执行时机:

  1. 服务器目前没有在执行BGSAVE或者BGREWRITEAOF命令,并且哈希表负载因子>=1
  2. 服务器目前正在执行BGSAVE或者BGREWRITEAOF命令,并且哈希表负载因子>=5

负载因子=哈希表已保存的节点数量 / 哈希表大小

收缩操作执行:负载因子小于等于0.1

2.4.2、 如何进行rehash

rehash步骤:
1、为字典ht[1]分配空间,空间大小取决于ht[0]当前包含的键值对数量(ht[0].used)1.1. 扩展操作,空间大小 = 第一个大于等于 ht[0].used*2 的 2的n次幂。比如 ht[0].used =5,那么5*2=10,第一个大于10的2的n次幂是16,那么h[1]扩展为16.1.2. 收缩操作,h[1]大小  =第一个大于等于ht[0].used的2的n次幂。例如现在 ht[0].used =5,那么8是第一个大于等于5的2的n次幂。h[1]大小为8.
2、将ht[0]的键值对rehash到ht[1].
3、ht[0]全部迁移到ht[1]之后,释放ht[0],设置ht[1]为ht[0]

2.5、 渐进式rehash

为了避免rehash对服务器性能造成影响,服务器不是一次性将ht[0]里面的所有键值对rehash到ht[1]。而是分多次、渐进式处理。
步骤如下:
1、为ht[1] 分配空间,字典此时同时持有ht[0] 和ht[1];
2、字典中维持一个索引计数器变量 rehashidx,设置为0,表示rehash正式开始;
3、在rehash期间,每次对字典执行增删改查操作时,会将ht[0]在rehashidx索引上的所有键值对rehash到ht[1],当rehash完成之后,rehashidx 加1;
4、最终ht[0]所有键值对都被rehash到ht[1]之后,rehashidx=-1,表示rehash操作已经完成。

http://www.yidumall.com/news/18306.html

相关文章:

  • 深圳做营销型网站蔡甸seo排名公司
  • 怎么做网站广告卖钱内容营销的4个主要方式
  • 在线视频网站开发成本指数运算公式大全
  • 精英学校老师给学生做的网站智慧软文
  • 百度网站怎么做的赚钱吗重庆森林电影高清在线观看
  • 游戏网站设计论文全球网站排名
  • 烟台网站建设哪家好网络营销成功案例分析其成功原因
  • 响应式环保网站模板百度seo排名优化公司哪家强
  • 网站建设公司市场定位软文广告投放平台
  • 网站做关键词库的作用seo查询 站长之家
  • 人大常委会网站建设意见网络营销师官网
  • wordpress站群+优化百度正版下载
  • 如何快速提升网站权重郑州seo排名优化公司
  • 东莞微网站建设费用河南优化网站
  • 公司网站建设推荐乐云seo印度疫情为何突然消失
  • 做营销型网站公司有哪些可以推广的平台
  • 公司网站如何做的美丽seo的课谁讲的好
  • 网站支付页面怎么做百度官网网址
  • wordpress网站描述插件网站优化公司开始上班了
  • 网站布局的好坏的几个要素seo优化软件哪个好
  • 产品做优化好还是超级网站好北京出大大事了
  • 当铺网站建设方案seo在线诊断工具
  • 淄博营销网站建设网站开发公司
  • 网站优化设计方案怎么做湖南网络推广机构
  • 抚顺您做煮火锅网站外包公司有哪些
  • 购物优惠券网站怎么做免费推广网站入口
  • 具有价值的专业网站建设平台小红书搜索关键词排名
  • 做网站需要备案几次收录网站排名
  • 网站制作商城百度搜索结果优化
  • 德州品牌策划公司天津seo网站管理