用于并发读密集型的乐观Cuckoo(布谷鸟) Hashing:Optimistic Cuckoo Hashing for concurrent, read-intensive applications一文探索的是针对高并发读,只有一个线程写的应用场景下,如何最大限度提高诸如memcached之类缓存的吞吐量。

作者介绍了他们使用了一个新的哈希算法,适合多个读,单个写并发,称为Cuckoo布谷鸟 hashing。因为是主要面向读操作,所以称之为乐观的(相对于悲观锁而言)。 在其中引入了SILT ("partial-key cuckoo hashing")新的方法: 当新的数据插入时如何移动其中数据,这样它同时支持很高吞吐量的读操作,同时允许一个线程以很高频率和速度不断更新哈希中的数据(测试: 2M updates/second ).

优点:

1. 快速并发读高吞吐量Fast concurrent read throughput (no mutex required)

2.拿得出手的写吞吐量 write throughput (each update requires acquiring a mutex)

3.非常高的内存效率,尤其对于小的key/value pairs

可预测和快速的读取性能:每读正好有两个内存引用references.

缺陷:

1.哈希表大小不能动态变化,如果满了,得摧毁旧的创建新的更大的,将旧的再导入新的。

2.对于写操作很多(write-heavy (>50%) workloads. )的应用会比较慢

相对于传统的Linear Probing 和Chaining算法,布谷鸟算法非常类似布谷鸟叫声,叫两声。布谷鸟算法的数据结构是假定一个槽slot里有几个bucket桶,有两个key:2,4表示(k=2 slots, b=4 buckets)。

当搜索一个布谷鸟哈希时,将在两个槽中寻找,s1 = h1(key), s2=h2(key),看看这两个槽中是否有要找的数据,如没有返回失败。

find(key):

foreach slot s in (s1, s2):

foreach bucket b in s:

if b.key == key:

return true, b.value

return false, nil

更多理解可见英文原文。

布谷鸟哈希函数的参数_用于并发读密集型的乐观Cuckoo(布谷鸟) Hashing相关推荐

  1. 布谷鸟哈希函数的参数_系统学习hash算法(哈希算法)

    系统学习hash算法(哈希算法) 转载请说明出处. 前言: 关于本文<系统学习hash算法>的由来.在看到了<十一.从头到尾彻底解析Hash 表算法>这篇文章之后,原文中没有暴 ...

  2. 布谷鸟哈希函数的参数_Cuckoo Hash 布谷鸟哈希

    布谷鸟哈希最早于2001 年由Rasmus Pagh 和Flemming Friche Rodler 提出.该哈希方法是为了解决哈希冲突的问题而提出,利用较少计算换取了较大空间.名称源于该哈希方法行为 ...

  3. 布谷鸟哈希函数的参数_Cuckoo Hash 布谷鸟哈希

    查看原文:http://www.dullgull.com/2012/05/cuckoo-hash-%e5%b8%83%e8%b0%b7%e9%b8%9f%e5%93%88%e5%b8%8c/ 布谷鸟哈 ...

  4. js有默认参数的函数加参数_函数参数:默认,关键字和任意

    js有默认参数的函数加参数 PYTHON开发人员的提示 (TIPS FOR PYTHON DEVELOPERS) Think that you are writing a function that ...

  5. python怎么理解函数的参数_理解Python中函数的参数

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...

  6. 函数传参数_算法笔记(7)第二章C、C++快速入门函数,main函数,

    #includevoid change(int x){ x=x+1;}int main(){ int x=10; change(x); prinf("%d\n",x); retur ...

  7. mysql函数输出参数_函数--返回值、参数和作用域

    一.函数的返回值--return的作用 1.return将return后面的值作为函数的输出返回值,当函数被调用时,返回值可以被其他变量接收.使用. 而print只是打印在控制台,一个函数如果没有re ...

  8. 哈希函数的特征_哈希函数及其特征

    哈希函数的特征 Prerequisite: Hashing data structure 先决条件: 哈希数据结构 The hash function is the component of hash ...

  9. pythonint函数的参数_向嵌入的Python函数传递两个参数(int和array)

    我需要从我的模块中调用Python函数并为其设置两个参数:int和array.在 现在我在调用这个函数的时候遇到了segfault,我不知道我做错了什么.有人能指出我的错误在哪里吗?在 函数在我的Py ...

最新文章

  1. python文件合法模式组合_python设计模式之组合模式
  2. Objective-C之null NaN undefined
  3. 分布式数据库DDM Sidecar模式负载均衡
  4. TMS320C55x汇编语言编程
  5. 开启smb协议_SMB协议(使用说明+过程详解+抓包分析)
  6. ps怎么制作流体_PS制作流体字
  7. idea mac 常用快捷键
  8. 下载网页中内嵌的PDF
  9. HTML5期末大作业:明星个人网站设计——权志龙(10页) 含设计报告HTML+CSS++JavaScript 个人网站模板下载 大学生简单DW个人网页作品代码 个人网页制作 学生个人网页...
  10. 计算机软件开发属于什么类的专业,软件工程专业属于哪个类别?
  11. Windows11 使用IE浏览器
  12. html链接到word文档,word做html超链接
  13. EFS加密文件重装系统无法打开图标带小锁显示绿色解密
  14. 爪哇国新游记之六----抽象类
  15. 使用遇到的问题_使用网络线上教学系统遇到问题怎么办?
  16. 疫情下的科技内卷:租房被卷进“网购”时代
  17. C++核心准则边译边学-P.9 不要浪费时间和空间
  18. linux+agent卸载_Symantec Backup Exec 2012 Agent for Linux 卸载 - 潇湘隐者
  19. Jason和xml两者的区别
  20. Linux命令行与shell脚本编程大全(shell脚本编程基础部分)

热门文章

  1. 不会被计算机打败的棋类游戏,电脑首次打败人类围棋冠军意味着什么?
  2. css表格文字超数量就竖排_绝了,超轻量级中文 OCR,你值得拥有
  3. 最真实的互联网用户画像...
  4. OpenJDK 正式宣布AWT、2D、Swing等项目解散
  5. 皮一皮:泡沫面膜,直男慎送此礼物...
  6. php 如何让图片循环显示图片,[宜配屋]听图阁
  7. python 多维list 排序_人生苦短 | Python列表和元组归纳整理
  8. linux下内存测试mbw,【转帖】MBW内存测试
  9. php 获取日期标签的值,在php中获取标签的选定索引值
  10. 【SpringCloud】zuul:网关