[发明专利]用于哈希缓存的方法以及装置在审
申请号: | 202011069352.4 | 申请日: | 2020-09-30 |
公开(公告)号: | CN113297101A | 公开(公告)日: | 2021-08-24 |
发明(设计)人: | 郑晓茵 | 申请(专利权)人: | 阿里云计算有限公司 |
主分类号: | G06F12/0877 | 分类号: | G06F12/0877;G06F12/0893;G06F9/52 |
代理公司: | 北京智信禾专利代理有限公司 11637 | 代理人: | 赵杰 |
地址: | 310024 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 缓存 方法 以及 装置 | ||
本说明书实施例提供用于哈希缓存的方法以及装置,其中所述用于哈希缓存的方法包括:在哈希表中查找出关键码映射的哈希槽,由于所述哈希表中设置有固定数量的哈希桶,所述哈希桶设置有固定数量的哈希槽,因此,所述哈希槽可以设置有原子锁;获取所述关键码映射的哈希槽的原子锁以加锁;针对所述关键码映射的哈希槽执行访问;释放所述关键码映射的哈希槽的原子锁,从而不仅保证线程安全,并发冲突少,且可在多核能力下实现高吞吐的读写访问。
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种用于哈希缓存的方法。本说明书一个或者多个实施例同时涉及一种用于哈希缓存的装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
随着互联网的普及,服务器的信息量越来越多,访问量也越来越大。为了实现高吞吐的读写访问,利用哈希缓存存储一部分磁盘中的数据,是较为常见的一种存储方式。哈希缓存,是基于哈希表实现的缓存技术。哈希表,是根据关键码(Key)直接访问在内存储存位置的数据结构。通过哈希函数计算关键码的哈希值,将关键码映射到哈希表中哈希值对应的位置来访问记录,从而一定程度上加快了访问速度。
但是,由于哈希缓存在多线程访问时,可能存在并发冲突,因此,如何使哈希缓存既能避免并发冲突,又能提高读写吞吐,成为困扰人们的难题。
发明内容
有鉴于此,本说明书施例提供了一种用于哈希缓存的方法。本说明书一个或者多个实施例同时涉及一种用于哈希缓存的装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种用于哈希缓存的方法,包括:在哈希表中查找出关键码映射的哈希槽,其中,所述哈希表中设置有固定数量的哈希桶,所述哈希桶设置有固定数量的哈希槽,所述哈希槽设置有原子锁;获取所述关键码映射的哈希槽的原子锁以加锁;针对所述关键码映射的哈希槽执行访问;释放所述关键码映射的哈希槽的原子锁。
可选地,所述哈希槽设置有哈希标签位,所述在哈希表中查找出关键码映射的哈希槽包括:通过计算需要访问的关键码的哈希值,确定所述关键码对应的哈希标签,所述哈希标签为所述哈希值的部分取值;根据所述哈希表中的哈希槽的哈希标签位,查找出与所述关键码对应的哈希标签相同的哈希槽;从与所述关键码对应的哈希标签相同的哈希槽中,查找出与关键码具有映射关系的哈希槽。
可选地,所述哈希槽设置有用于指向键值对对象的指针,所述键值对对象用于存储关键码及对应的值;所述针对所述关键码映射的哈希槽执行访问包括:利用所述关键码映射的哈希槽的指针指向的键值对对象,执行所述访问。
可选地,所述哈希槽设置有最近标识符,所述方法还包括:在释放所述关键码映射的哈希槽的原子锁之前,将所述关键码映射的哈希槽的最近标识符对应的值设置为真。
可选地,所述在哈希表中查找出关键码映射的哈希槽包括:通过计算需要访问的关键码的哈希值,查找出所述哈希值对应的哈希槽;在所述访问为写入关键码的情况下,判断查找出的哈希槽中是否存在空哈希槽;如果查找出的哈希槽中存在空哈希槽,则将所述空哈希槽作为所述关键码映射的哈希槽;如果查找出的哈希槽中不存在空哈希槽,则从所述关键码映射的哈希桶中查找出最近标识符对应的值为假的哈希槽作为所述关键码映射的哈希槽,且将所述关键码映射的哈希槽中原有关键码的数据逐出。
可选地,所述方法还包括:开始对所述哈希表中的哈希槽进行遍历;判断当前遍历到的哈希槽的最近标识符是否为真或假;如果当前遍历到的哈希槽的最近标识符为假,判断是否能获取所述当前遍历到的哈希槽的原子锁,如果能获取到当前遍历到的哈希槽的原子锁,则将当前遍历到的哈希槽中的原有关键码的数据逐出;如果当前遍历到的哈希槽的最近标识符为真,判断是否能获取所述当前遍历到的哈希槽的原子锁,如果能获取到当前遍历到的哈希槽的原子锁,则对当前遍历到的哈希槽的原子锁加锁且将当前遍历到的哈希槽的最近标识符置为假,释放当前遍历到的哈希槽的原子锁;继续遍历下一哈希槽,返回到所述判断当前遍历到的哈希槽的最近标识符是否为真或假的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里云计算有限公司,未经阿里云计算有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011069352.4/2.html,转载请声明来源钻瓜专利网。