[發明專利]用于哈希緩存的方法以及裝置在審
| 申請號: | 202011069352.4 | 申請日: | 2020-09-30 |
| 公開(公告)號: | CN113297101A | 公開(公告)日: | 2021-08-24 |
| 發明(設計)人: | 鄭曉茵 | 申請(專利權)人: | 阿里云計算有限公司 |
| 主分類號: | G06F12/0877 | 分類號: | G06F12/0877;G06F12/0893;G06F9/52 |
| 代理公司: | 北京智信禾專利代理有限公司 11637 | 代理人: | 趙杰 |
| 地址: | 310024 浙江省*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 緩存 方法 以及 裝置 | ||
本說明書實施例提供用于哈希緩存的方法以及裝置,其中所述用于哈希緩存的方法包括:在哈希表中查找出關鍵碼映射的哈希槽,由于所述哈希表中設置有固定數量的哈希桶,所述哈希桶設置有固定數量的哈希槽,因此,所述哈希槽可以設置有原子鎖;獲取所述關鍵碼映射的哈希槽的原子鎖以加鎖;針對所述關鍵碼映射的哈希槽執行訪問;釋放所述關鍵碼映射的哈希槽的原子鎖,從而不僅保證線程安全,并發沖突少,且可在多核能力下實現高吞吐的讀寫訪問。
技術領域
本說明書實施例涉及計算機技術領域,特別涉及一種用于哈希緩存的方法。本說明書一個或者多個實施例同時涉及一種用于哈希緩存的裝置,一種計算設備,以及一種計算機可讀存儲介質。
背景技術
隨著互聯網的普及,服務器的信息量越來越多,訪問量也越來越大。為了實現高吞吐的讀寫訪問,利用哈希緩存存儲一部分磁盤中的數據,是較為常見的一種存儲方式。哈希緩存,是基于哈希表實現的緩存技術。哈希表,是根據關鍵碼(Key)直接訪問在內存儲存位置的數據結構。通過哈希函數計算關鍵碼的哈希值,將關鍵碼映射到哈希表中哈希值對應的位置來訪問記錄,從而一定程度上加快了訪問速度。
但是,由于哈希緩存在多線程訪問時,可能存在并發沖突,因此,如何使哈希緩存既能避免并發沖突,又能提高讀寫吞吐,成為困擾人們的難題。
發明內容
有鑒于此,本說明書施例提供了一種用于哈希緩存的方法。本說明書一個或者多個實施例同時涉及一種用于哈希緩存的裝置,一種計算設備,以及一種計算機可讀存儲介質,以解決現有技術中存在的技術缺陷。
根據本說明書實施例的第一方面,提供了一種用于哈希緩存的方法,包括:在哈希表中查找出關鍵碼映射的哈希槽,其中,所述哈希表中設置有固定數量的哈希桶,所述哈希桶設置有固定數量的哈希槽,所述哈希槽設置有原子鎖;獲取所述關鍵碼映射的哈希槽的原子鎖以加鎖;針對所述關鍵碼映射的哈希槽執行訪問;釋放所述關鍵碼映射的哈希槽的原子鎖。
可選地,所述哈希槽設置有哈希標簽位,所述在哈希表中查找出關鍵碼映射的哈希槽包括:通過計算需要訪問的關鍵碼的哈希值,確定所述關鍵碼對應的哈希標簽,所述哈希標簽為所述哈希值的部分取值;根據所述哈希表中的哈希槽的哈希標簽位,查找出與所述關鍵碼對應的哈希標簽相同的哈希槽;從與所述關鍵碼對應的哈希標簽相同的哈希槽中,查找出與關鍵碼具有映射關系的哈希槽。
可選地,所述哈希槽設置有用于指向鍵值對對象的指針,所述鍵值對對象用于存儲關鍵碼及對應的值;所述針對所述關鍵碼映射的哈希槽執行訪問包括:利用所述關鍵碼映射的哈希槽的指針指向的鍵值對對象,執行所述訪問。
可選地,所述哈希槽設置有最近標識符,所述方法還包括:在釋放所述關鍵碼映射的哈希槽的原子鎖之前,將所述關鍵碼映射的哈希槽的最近標識符對應的值設置為真。
可選地,所述在哈希表中查找出關鍵碼映射的哈希槽包括:通過計算需要訪問的關鍵碼的哈希值,查找出所述哈希值對應的哈希槽;在所述訪問為寫入關鍵碼的情況下,判斷查找出的哈希槽中是否存在空哈希槽;如果查找出的哈希槽中存在空哈希槽,則將所述空哈希槽作為所述關鍵碼映射的哈希槽;如果查找出的哈希槽中不存在空哈希槽,則從所述關鍵碼映射的哈希桶中查找出最近標識符對應的值為假的哈希槽作為所述關鍵碼映射的哈希槽,且將所述關鍵碼映射的哈希槽中原有關鍵碼的數據逐出。
可選地,所述方法還包括:開始對所述哈希表中的哈希槽進行遍歷;判斷當前遍歷到的哈希槽的最近標識符是否為真或假;如果當前遍歷到的哈希槽的最近標識符為假,判斷是否能獲取所述當前遍歷到的哈希槽的原子鎖,如果能獲取到當前遍歷到的哈希槽的原子鎖,則將當前遍歷到的哈希槽中的原有關鍵碼的數據逐出;如果當前遍歷到的哈希槽的最近標識符為真,判斷是否能獲取所述當前遍歷到的哈希槽的原子鎖,如果能獲取到當前遍歷到的哈希槽的原子鎖,則對當前遍歷到的哈希槽的原子鎖加鎖且將當前遍歷到的哈希槽的最近標識符置為假,釋放當前遍歷到的哈希槽的原子鎖;繼續遍歷下一哈希槽,返回到所述判斷當前遍歷到的哈希槽的最近標識符是否為真或假的步驟。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里云計算有限公司,未經阿里云計算有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011069352.4/2.html,轉載請聲明來源鉆瓜專利網。





