[发明专利]数据存储方法、装置及存储介质有效
申请号: | 201710322014.9 | 申请日: | 2017-05-09 |
公开(公告)号: | CN108874803B | 公开(公告)日: | 2023-05-12 |
发明(设计)人: | 蔡畅奇 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 朱雅男 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据 存储 方法 装置 介质 | ||
1.一种数据存储方法,其特征在于,应用于服务器中,所述服务器中包括数据存储系统,所述数据存储系统包括键值存储数据库Redis集群、开源关系型数据库Postgresql集群,所述Redis提供存储、获取、统计和计算四个命令,所述Redis提供接口实现数据的插入、查找或者删除,所述Redis用于管理布隆过滤器BloomFliter的数据,所述BloomFliter包括一个二进制向量和至少两个目标哈希函数,所述方法包括:
获取目标用户的用户标识和待推送消息的消息标识,所述目标用户为进行历史消息推送时需要推送的用户;
拼接所述目标用户的用户标识的字符串与所述待推送消息的消息标识的字符串,生成数据记录;
基于BloomFliter算法,对所述数据记录中生成的数据进行预查询,从中筛选出误判数据记录;
根据所述误判数据记录和查询次数,计算查询误判率,并将所述误判数据记录组成误判消息表,所述查询误判率为在历史查询过程中出现错误的比例,所述查询误判率用于确定目标哈希函数的目标数量,所述误判消息表存储在所述Redis集群中的主Redis中;
获取待存储数据记录,所述待存储数据记录由用户标识和消息标识组成;
采用至少两个目标哈希函数对所述待存储数据记录进行计算,得到至少两个第一哈希值,所述至少两个目标哈希函数相互独立;
确定每个第一哈希值在位数组中对应的存储位置,所述位数组用于存储数据,所述位数组中的数据采用二进制形式进行存储,所述位数组的第一行表示所述位数组的存储位置,当所述存储位置上的标识为1时,表示所述存储位置上存储有二进制数据,当所述存储位置上的标识为0时,表示所述存储位置上未存储有二进制数据,所述位数组的第二行表示所述位数组每个存储位置对应的哈希值,且所述位数组不同的存储位置对应不同的哈希值;所述位数组作为所述Redis的维数存储到所述Redis集群中的主Redis中,所述主Redis使用字符串对象表示所述位数组,所述主Redis将存储的数据同步到从Redis中,且所述主Redis每隔预设时长将存储的数据同步到所述Postgresql集群中的主Postgresql中,所述主Postgresql用于将存储的数据同步到从Postgresql中;
当任一第一哈希值对应的存储位置上未存储有二进制数据,在所述存储位置上存储所述第一哈希值对应的二进制数据;
接收数据查询请求,所述数据查询请求包括待查询数据记录;
采用所述至少两个目标哈希函数对所述待查询数据记录进行计算,得到至少两个第二哈希值;
当所述位数组中存储有每个第二哈希值,判断所述误判消息表中是否存储所述待查询数据记录;
当所述误判消息表中存储有所述待查询数据记录,确定查询结果为所述位数组中未存储所述待查询数据记录;
当所述误判消息表中未存储所述待查询数据记录,确定查询结果为所述位数组中存储有所述待查询数据记录;
当所述位数组中未存储任一第二哈希值,确定查询结果为所述位数组中未存储所述待查询数据记录。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据目标用户数量和待推送消息数量,确定消息的推送总数量;
根据所述推送总数量和预先确定的查询误判率,计算所述位数组的目标存储空间;
根据所述位数组的目标存储空间和所述推送总数量,计算所述目标哈希函数的目标数量;
获取所述目标数量个相互独立的哈希函数,并将所述目标数量个相互独立的哈希函数作为所述至少两个目标哈希函数。
3.根据权利要求2所述的方法,其特征在于,所述根据所述推送总数量和预先确定的查询误判率,计算所述位数组的目标存储空间,包括:
根据所述推送总数量和预先确定的查询误判率,应用以下公式,计算所述位数组的目标存储空间:
;
所述根据所述位数组的目标存储空间和所述推送总数量,计算所述目标哈希函数的目标数量,包括:
根据所述位数组的目标存储空间和所述推送总数量,应用以下公式,计算所述目标哈希函数的目标数量:
;
其中,为所述位数组的目标存储空间,为所述推送总数量,为所述预先确定的查询误判率,为所述目标哈希函数的目标数量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710322014.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:网页检测方法和装置
- 下一篇:数据存储方法、数据查询方法及装置
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置