1. 概述 a. 它就是一个键值对,对于hash冲突的处理采用了头插法的链式存储来解决。 b. 对rehash,扩展就是取第一个大于等于 used * 2 的2 ^ n的数作为新的hash表大小;缩紧就是取第一个大于等于 used 的2 ^ n的数作为新的hash表大小。 c. 有个负载因子的概念( ...
分类:
其他好文 时间:
2018-08-27 23:21:54
阅读次数:
240
redis源码分析之内存布局 1. 介绍 众所周知,redis是一个开源、短小、高效的key-value存储系统,相对于memcached,redis能够支持更加丰富的数据结构,包括: 主流的key-value存储系统,都是在系统内部维护一个hash表,因为对hash表的操作时间复杂度为O(1)。如 ...
分类:
其他好文 时间:
2018-08-23 00:36:26
阅读次数:
277
1.基本属性 1.1 sizeCtl -1代表正在初始化 -N 表示有N-1个线程正在进行扩容操作 正数或0代表hash表还没有被初始化,这个数值表示初始化或下一次进行扩容的大小,这一点类似于扩容阈值的概念。 当表示阈值时,只等于当前容量的1.5倍加1 ...
分类:
其他好文 时间:
2018-08-20 01:13:08
阅读次数:
214
0.前言 redis初始创建hash表,有序集合,链表时, 存储结构采用一种ziplist的存储结构, 这种结构内存排列更紧密, 能提高访存性能. 本文介绍ziplist数据结构 1.ziplist存储结构 ziplist并没有定义明确的结构体, 根据存储结构我们可以定义ziplist如下, 只是进 ...
分类:
其他好文 时间:
2018-08-19 21:54:58
阅读次数:
140
原文链接:https://blog.csdn.net/hll174/article/details/50915346 正常的ReHash的过程 画了个图做了个演示。 我假设了我们的hash算法就是简单的用key mod 一下表的大小(也就是数组的长度)。 最上面的是old hash 表,其中的Has ...
分类:
其他好文 时间:
2018-08-18 23:31:02
阅读次数:
195
文章转自 https://blog.csdn.net/caomiao2006/article/details/52145477 Mysql目前主要有以下几种索引方式:FULLTEXT,HASH,BTREE,RTREE。 那么,这几种索引有什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目 ...
分类:
数据库 时间:
2018-08-16 00:42:52
阅读次数:
174
Memcached 是一套开源的高性能分布式内存对象缓存系统,它将所有的数据都存储在内存中,因为在内存中会统一维护一张巨大的 Hash 表,所以支持任意存储类型的数据。很多网站通过使用 Memcached 提高网站的访问速度,尤其是对于大型的需要频繁访问数据的网站。
Memcached 是典型的 C/S 架构,因此需要安装 Memcached 服务端与 Memcached API 客户端。Memcached 服务端是用 C 语音编写的,而 Memcached API 客户端可以用任何语言来编写,如PHP、Python、Perl 等,并通过 Memcached 协议与 Memcached 服务端进行通信。
分类:
系统相关 时间:
2018-08-12 20:02:55
阅读次数:
222
作为重要的常用集合,HashMap主要是提供键值对的存取,通过key值可以快速找到对应的value值。Hash表是通过提前设定好的规则计算一个元素的hash值来找到他在数组中的存储位置进行快速定位,假设有一个大小为10的数组,可以设定简单的计算规则为元素转为int后mod 10,由此元素的hash值 ...
分类:
编程语言 时间:
2018-08-11 21:54:50
阅读次数:
163
一、hashcode是什么? 1、hash和hash表是什么? hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值,这个时候,我们就需要知道另一个东西,hash表,通过hash算法得到的hash值就在这张hash表中,也就是说,hash表就是所有的hash值组成 ...
分类:
其他好文 时间:
2018-08-06 14:37:05
阅读次数:
118