一种基于双重布隆过滤器的云缓存系统及云缓存方法技术方案

技术编号:28213233 阅读:12 留言:0更新日期:2021-04-24 14:52
本发明专利技术公开了一种基于双重布隆过滤器的云缓存系统,包括:第一布隆过滤器和第二布隆过滤器;所述第一布隆过滤器包括:第一hash函数,所述第一hash函数包括:第一位数组;所述第二布隆过滤器包括:第二hash函数,所述第二hash函数包括:第一位数组;其中,第一位数组和第二位数组的每个位的初始值均为0。本发明专利技术还公开了一种基于双重布隆过滤器的云缓存方法。本发明专利技术采用两种hash算法对应两个布隆过滤器的数组,能有效减少误判,误判率在0.01%以下;同时布隆过滤器数组中存储的为短整型数据,如果有两个元素对应位数组中相同位置则布隆过滤器中值为2,只有一个元素时为1,不存在时为0。0。0。

【技术实现步骤摘要】
一种基于双重布隆过滤器的云缓存系统及云缓存方法


[0001]本专利技术涉及云缓存
,尤其涉及一种基于双重布隆过滤器的云缓存系统及云缓存方法。

技术介绍

[0002]随着互联网用户的增多,系统的访问并发量越来越大。数据库的访问性能已经成为系统性能的瓶颈,缓存技术的出现很好的解决了这个问题。
[0003]现有技术中一般使用单个布隆过滤器并且布隆过滤器对应数组存储bit型数据,因此存在下面缺点:因为对hash值取模的时候可能会发生数组的碰撞(如hash值11和hash值6对长度为5的数组进行取模值都为1),因此有一定的误判率;另外,因为布隆过滤器存储的bit类型数据,如果过滤器中数组中值对应为1时,可能有多条数据,所以该布隆过滤器无法支持删除操作。
[0004]因此,现有的缓存方法在保证缓存数据时,存在缓存数据和数据库数据缺乏一致性的问题。此外,使用传统的布隆过滤器还有两个缺陷:一是会存在误判;二是不支持元素删除。

技术实现思路

[0005]针对以上问题,本专利技术提出一种基于双重布隆过滤器的云缓存系统及云缓存方法。
[0006]为实现本专利技术的目的,提供一种基于双重布隆过滤器的云缓存系统,所述云缓存系统包括:第一布隆过滤器和第二布隆过滤器;所述第一布隆过滤器包括:第一hash函数,所述第一hash函数包括:第一位数组;所述第二布隆过滤器包括:第二hash函数,所述第二hash函数包括:第二位数组;其中,所述第一位数组和第二位数组均为short类型,且所述第一位数组和第二位数组的每个位的初始值均为0。
[0007]本专利技术还提供了一种基于双重布隆过滤器的云缓存方法,添加元素的过程包括:用户发送添加元素的请求;第一hash函数对元素进行映射并得到元素在所述第一位数组上的位置;将上述元素在第一位数组上的位置对应的值增加1;第二hash函数对元素进行映射并得到元素在所述第二位数组上的位置;将上述元素在第二位数组上的位置对应的值增加1;将上述添加的元素新增到云缓存中;将上述云缓存中新增的元素更新到数据库中完成操作。
[0008]进一步地,所述云缓存方法中,查询元素的过程包括:用户根据元素的唯一标识符发送查询元素的请求;第一hash函数根据所述元素的唯一标识符计算并得到所述唯一标识符对应的第一hash值;将上述第一hash值对所述第一位数组进行取模运算,并得到所述元素在所述第一位数组上的位置;判断上述元素在所述第一位数组上的位置对应的值是否大于0;
[0009]第二hash函数根据所述元素的唯一标识符计算并得到所述唯一标识符对应的第
二hash值;将上述第二hash值对所述第二位数组进行取模运算,并得到所述元素在所述第二位数组上的位置;判断上述元素在所述第二位数组上的位置对应的值是否大于0;
[0010]若上述元素在所述第一位数组上对应的值和在所述第二位数组上对应的值同时满足大于0,
[0011]则表示所述元素存在;云缓存中执行查询元素的操作;若云缓存中查询元素失败,则继续在数据库中执行查询元素的操作并返回查询结果;若云缓存中查询元素成功,则直接返回查询结果;
[0012]否则表示所述元素不存在,直接结束查询操作。
[0013]进一步地,所述云缓存方法中,删除元素的过程包括:用户发送删除元素的请求;第一hash函数对元素进行映射并得到元素在所述第一位数组上的位置;将上述元素在第一位数组上的位置对应的值减去1;第二hash函数对元素进行映射并得到元素在所述第二位数组上的位置;
[0014]将上述元素在第二位数组上的位置对应的值减去1;
[0015]对云缓存中的上述元素执行删除操作;
[0016]对数据库中的上述元素执行删除操作。
[0017]跟现有技术相比,本专利技术具有以下有益技术效果:
[0018]本专利技术采用两个hash算法对应两个布隆过滤器的位数组,能有效减少误判,误判率在0.01%以下;同时布隆过滤器位数组中存储的为短整型数据,如果有两个元素对应位数组中相同位置则布隆过滤器中值为2,只有一个元素时为1,不存在时为0。
附图说明
[0019]图1是一个实施例的基于双重布隆过滤器的云缓存方法中新增元素的流程示意图;
[0020]图2是一个实施例的基于双重布隆过滤器的云缓存方法中查询元素的流程示意图;
[0021]图3是一个实施例的基于双重布隆过滤器的云缓存方法中删除元素的流程示意图;
[0022]图4是一个实施例的布隆过滤器示意图。
具体实施方式
[0023]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0024]在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0025]本实施例提供了一种基于双重布隆过滤器的云缓存系统,所述云缓存系统包括:第一布隆过滤器和第二布隆过滤器;所述第一布隆过滤器包括:第一hash函数,所述第一
hash函数包括:第一位数组;所述第二布隆过滤器包括:第二hash函数,所述第二hash函数包括:第二位数组;其中,所述第一位数组和第二位数组均为short类型,且所述第一位数组和第二位数组的每个位的初始值均为0。
[0026]本实施例还提供了一种基于双重布隆过滤器的云缓存方法,如图1所示,添加元素的过程包括:
[0027]用户发送添加元素的请求;第一hash函数对元素进行映射并得到元素在所述第一位数组上的位置;将上述元素在第一位数组上的位置对应的值增加1;第二hash函数对元素进行映射并得到元素在所述第二位数组上的位置;将上述元素在第二位数组上的位置对应的值增加1;将上述添加的元素新增到云缓存中;将上述云缓存中新增的元素更新到数据库中完成操作。
[0028]在一个实施例中,如图2所示,所述云缓存方法中,查询元素的过程包括:
[0029]用户根据元素的唯一标识符发送查询元素的请求;
[0030]第一hash函数根据所述元素的唯一标识符计算并得到所述唯一标识符对应的第一hash值;将上述第一hash值对所述第一位数组进行取模运算,并得到所述元素在所述第一位数组上的位置;判断上述元素在所述第一位数组上的位置对应的值是否大于0;
[0031]第二hash函数根据所述元素的唯一标识符计算并得到所述唯一标识符对应的第二hash值;将上述第二hash值对所述第二位数组进行取模运算,并得到所述元素在所述第二位数组上的位置;判断上述元素在所述第二位数组上的位置对应的值是否大于0;
[0032]若上述元素在所述第一位数组上对应的值和在所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于双重布隆过滤器的云缓存系统,其特征在于,所述云缓存系统包括:第一布隆过滤器和第二布隆过滤器;所述第一布隆过滤器包括:第一hash函数,所述第一hash函数包括:第一位数组;所述第二布隆过滤器包括:第二hash函数,所述第二hash函数包括:第二位数组;其中,所述第一位数组和第二位数组均为short类型,且所述第一位数组和第二位数组的每个位的初始值均为0。2.一种基于双重布隆过滤器的云缓存方法,其特征在于,添加元素的过程包括:用户发送添加元素的请求;第一hash函数对元素进行映射并得到元素在所述第一位数组上的位置;将上述元素在第一位数组上的位置对应的值增加1;第二hash函数对元素进行映射并得到元素在所述第二位数组上的位置;将上述元素在第二位数组上的位置对应的值增加1;将上述添加的元素新增到云缓存中;将上述云缓存中新增的元素更新到数据库中完成操作。3.根据权利要求2所述的基于双重布隆过滤器的云缓存方法,其特征在于,查询元素的过程包括:用户根据元素的唯一标识符发送查询元素的请求;第一hash函数根据所述元素的唯一标识符计算并得到所述唯一标识符对应的第一hash值;将上述第一hash值对所述第一位数组进行取模运算,并得到...

【专利技术属性】
技术研发人员:钱晓林
申请(专利权)人:西藏宁算科技集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1