[發明專利]用于哈希緩存的方法以及裝置在審
| 申請號: | 202011069352.4 | 申請日: | 2020-09-30 |
| 公開(公告)號: | CN113297101A | 公開(公告)日: | 2021-08-24 |
| 發明(設計)人: | 鄭曉茵 | 申請(專利權)人: | 阿里云計算有限公司 |
| 主分類號: | G06F12/0877 | 分類號: | G06F12/0877;G06F12/0893;G06F9/52 |
| 代理公司: | 北京智信禾專利代理有限公司 11637 | 代理人: | 趙杰 |
| 地址: | 310024 浙江省*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 緩存 方法 以及 裝置 | ||
1.一種用于哈希緩存的方法,包括:
在哈希表中查找出關鍵碼映射的哈希槽,其中,所述哈希表中設置有固定數量的哈希桶,所述哈希桶設置有固定數量的哈希槽,所述哈希槽設置有原子鎖;
獲取所述關鍵碼映射的哈希槽的原子鎖以加鎖;
針對所述關鍵碼映射的哈希槽執行訪問;
釋放所述關鍵碼映射的哈希槽的原子鎖。
2.根據權利要求1所述的方法,所述哈希槽設置有哈希標簽位,所述在哈希表中查找出關鍵碼映射的哈希槽包括:
通過計算需要訪問的關鍵碼的哈希值,確定所述關鍵碼對應的哈希標簽,所述哈希標簽為所述哈希值的部分取值;
根據所述哈希表中的哈希槽的哈希標簽位,查找出與所述關鍵碼對應的哈希標簽相同的哈希槽;
從與所述關鍵碼對應的哈希標簽相同的哈希槽中,查找出與關鍵碼具有映射關系的哈希槽。
3.根據權利要求1所述的方法,所述哈希槽設置有用于指向鍵值對對象的指針,所述鍵值對對象用于存儲關鍵碼及對應的值;
所述針對所述關鍵碼映射的哈希槽執行訪問包括:
利用所述關鍵碼映射的哈希槽的指針指向的鍵值對對象,執行所述訪問。
4.根據權利要求1-3任一項所述的方法,所述哈希槽設置有最近標識符,所述方法還包括:
在釋放所述關鍵碼映射的哈希槽的原子鎖之前,將所述關鍵碼映射的哈希槽的最近標識符對應的值設置為真。
5.根據權利要求4所述的方法,所述在哈希表中查找出關鍵碼映射的哈希槽包括:
通過計算需要訪問的關鍵碼的哈希值,查找出所述哈希值對應的哈希槽;
在所述訪問為寫入關鍵碼的情況下,判斷查找出的哈希槽中是否存在空哈希槽;
如果查找出的哈希槽中存在空哈希槽,則將所述空哈希槽作為所述關鍵碼映射的哈希槽;
如果查找出的哈希槽中不存在空哈希槽,則從所述關鍵碼映射的哈希桶中查找出最近標識符對應的值為假的哈希槽作為所述關鍵碼映射的哈希槽,且將所述關鍵碼映射的哈希槽中原有關鍵碼的數據逐出。
6.根據權利要求4所述的方法,還包括:
開始對所述哈希表中的哈希槽進行遍歷;
判斷當前遍歷到的哈希槽的最近標識符是否為真或假;
如果當前遍歷到的哈希槽的最近標識符為假,判斷是否能獲取所述當前遍歷到的哈希槽的原子鎖,如果能獲取到當前遍歷到的哈希槽的原子鎖,則將當前遍歷到的哈希槽中的原有關鍵碼的數據逐出;
如果當前遍歷到的哈希槽的最近標識符為真,判斷是否能獲取所述當前遍歷到的哈希槽的原子鎖,如果能獲取到當前遍歷到的哈希槽的原子鎖,則對當前遍歷到的哈希槽的原子鎖加鎖且將當前遍歷到的哈希槽的最近標識符置為假,釋放當前遍歷到的哈希槽的原子鎖;
繼續遍歷下一哈希槽,返回到所述判斷當前遍歷到的哈希槽的最近標識符是否為真或假的步驟。
7.根據權利要求6所述的方法,所述開始對所述哈希表中的哈希槽進行遍歷包括:當所述哈希緩存對內存資源的占用達到預設開始逐出水位時,開始對所述哈希表中的哈希槽進行遍歷;
所述方法還包括:
當所述哈希緩存對內存資源的占用達到預設停止逐出水位時,停止對所述哈希表中的哈希槽進行遍歷。
8.根據權利要求7所述的方法,還包括:
接收對所述預設開始逐出水位和/或所述預設停止逐出水位的配置指令;
根據所述配置指令,設置所述預設開始逐出水位和/或所述預設停止逐出水位的值。
9.根據權利要求6所述的方法,還包括:
如果在對所述哈希表完成一次遍歷的過程中,沒有遍歷到最近標識符為假的哈希槽,則從所述哈希表中隨機選擇哈希槽,獲取隨機選擇到的哈希槽的原子鎖,將所述隨機選擇到的哈希槽中的原有關鍵碼的數據逐出,釋放所述隨機選擇到的哈希槽的原子鎖。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里云計算有限公司,未經阿里云計算有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011069352.4/1.html,轉載請聲明來源鉆瓜專利網。





