[發明專利]一種Redis內存數據的淘汰方法和裝置有效
| 申請號: | 201710911281.X | 申請日: | 2017-09-29 |
| 公開(公告)號: | CN109582460B | 公開(公告)日: | 2023-03-21 |
| 發明(設計)人: | 魯振華 | 申請(專利權)人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50;G06F9/48 |
| 代理公司: | 北京安信方達知識產權代理有限公司 11262 | 代理人: | 栗若木;龍洪 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 redis 內存 數據 淘汰 方法 裝置 | ||
本申請提供一種Redis內存數據的淘汰方法和裝置;所述Redis內存數據的淘汰方法,包括:Redis主線程收到用于增加內存數據的請求后,如果判斷當前的內存使用量達到或超過預設的最大內存值,并且滿足預設條件,則按照第一預設策略刪除內存數據后,處理所述用于增加內存數據的請求;Redis主線程周期性處理用于淘汰內存數據的時間事件;所述用于淘汰內存數據的時間事件包括:在當前的內存使用量達到或超過最大內存值時,按照第二預設策略刪除內存數據;其中,所述第一預設策略和第二預設策略是內存數據的淘汰策略。本申請至少一個實施例可以在不增加復雜度的情況下避免突發性延遲。
技術領域
本發明涉及數據處理領域,尤其涉及一種Redis內存數據的淘汰方法和裝置。
背景技術
Redis是一個開源的高性能的鍵值對(Key-Value)緩存數據庫。Redis允許通過配置Redis實例的最大內存值server.maxmemory,來設置服務器的最大內存的大小;其中,Redis實例指的是一個Redis進程或者一個Redis服務的實體。
當Redis主線程收到一條會增加內存的命令時,將檢查當前Redis所使用的內存量(后文稱為當前的內存使用量)是否超過server.maxmeory。如果超過了,Redis會進行即時的內存淘汰過程,即:按照配置的內存數據的淘汰策略(即:優先刪除哪部分數據的策略)挑選部分數據進行刪除,直到當前的內存使用量小于server.maxmeory,然后再執行收到的命令。
一些情況下,如果當前的內存使用量超過server.maxmeory很多(比如有大Key存在的情況),內存淘汰過程執行的時間會比較長,導致Redis服務長時間不響應;或者內存淘汰過程中刪除大Key也有可能導致Redis主線程被阻塞,長時間無法響應用戶請求。
Redis 4.0采用后臺線程非阻塞式刪除:把刪除超出最大內存值部分數據的過程放到后臺線程執行;但是,多線程的引入會增加程序的復雜度,降低程序的穩定性。當后臺線程處理的事情太多時,后臺線程有可能繁忙到來不及刪除指定的Key,會導致整個Redis服務內存積壓,有可能超出最大內存很多。
發明內容
本申請提供一種Redis內存數據的淘汰方法和裝置,在不增加復雜度的情況下避免突發性延遲。
本申請采用如下技術方案。
一種Redis內存數據的淘汰方法,包括:
Redis主線程收到用于增加內存數據的請求后,如果判斷當前的內存使用量達到或超過預設的最大內存值,并且滿足預設條件,則按照第一預設策略刪除內存數據后,處理所述用于增加內存數據的請求;
Redis主線程周期性處理用于淘汰內存數據的時間事件;所述用于淘汰內存數據的時間事件包括:在當前的內存使用量達到或超過最大內存值時,按照第二預設策略刪除內存數據;
其中,所述第一預設策略和第二預設策略是內存數據的淘汰策略。
其中,所述預設條件可以是指:
當前的內存使用量達到或超過所述最大內存值的N倍,N>1。
其中,可以2>N>1。
其中,所述按照第一預設策略刪除內存數據后,處理用于增加內存數據的請求可以包括:
按照第一預設策略刪除內存數據,直到內存使用量小于或等于最大內存值的N倍后,處理用于增加內存數據的請求。
其中,所述用于淘汰內存數據的時間事件還可以包括:
當到達本時間事件的處理時限,或內容使用量低于最大內存值時,停止刪除內存數據。
其中,所述的淘汰方法還可以包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里巴巴集團控股有限公司,未經阿里巴巴集團控股有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710911281.X/2.html,轉載請聲明來源鉆瓜專利網。
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





