[發明專利]一種基于ORM的分布式全局緩存系統在審
| 申請號: | 202210305131.5 | 申請日: | 2022-03-25 |
| 公開(公告)號: | CN114610770A | 公開(公告)日: | 2022-06-10 |
| 發明(設計)人: | 王黎明;王強 | 申請(專利權)人: | 上海旭榮網絡科技有限公司 |
| 主分類號: | G06F16/2455 | 分類號: | G06F16/2455;G06F16/23;G06F16/22;G06F16/27 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 201899 上海市嘉定區*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 orm 分布式 全局 緩存 系統 | ||
1.一種基于ORM的分布式全局緩存系統,其特征在于,包括以下步驟:
(1)設計基于結構化數據庫的全局配置表;
(2)通過ORM管理后臺增加使用目標配置數據;
(3)創建完成使用目標數據后,提取表的所有字段組織為json格式的數據;
(4)將json格式的數據寫入到緩存數據庫redis,為保證穩定性,可同時寫入備用數據庫如MongoDB;
(5)在所有服務需要用到使用目標數據的位置,從緩存數據庫中獲取使用目標列表;
(6)實例化偽ORM類,使用配置進行使用目標邏輯處理。
2.根據權利要求1所述的一種基于ORM的分布式全局緩存系統,其特征在于:所述全局緩存系統涉及兩種數據:一種為配置數據庫,為關系型數據庫比如MySQL、PostgreSQL等;一種為緩存數據庫,為非關系型數據庫,比如Redis、Memcache等。
3.根據權利要求1所述的一種基于ORM的分布式全局緩存系統,其特征在于:所述步驟(3)中的json格式的數據包含全表緩存、按唯一字段緩存和按組緩存三種,其中全表緩存的緩存key命名為global_conf_表名_all;按唯一字段緩存的緩存key命名規范為global_conf_key_value,key是表字段,value是數據庫中的值;按組緩存的緩存key命名規范和按唯一字段緩存一致,為global_conf_key_value。
4.根據權利要求1所述的一種基于ORM的分布式全局緩存系統,其特征在于:所述步驟(3)中的json格式的數據讀取方法分為所有數據獲取、單個數據獲取和按條件符合篩選的多個配置。
5.根據權利要求1所述的一種基于ORM的分布式全局緩存系統,其特征在于:所述步驟(3)中的json格式的所有數據獲取的方法為:
(1)拼接緩存key名,為global_conf_表名_all;
(2)查詢全局變量中是否已有緩存key和對應數據;
(3)如果有緩存key且生成緩存key的數據小于5秒,則直接返回全局變量中緩存key對應的數據;
(4)全局變量沒有緩存key或全局變量中緩存key的數據獲取時間超過5秒,則從Redis中獲取緩存key的數據,并轉為json;
(5)如果Redis獲取數據失敗,則從備份緩存數據庫MongoDB中獲取緩存key的數據;
(6)將數據更新到全局參數對應的緩存key中,并記錄更新的時間,同時返回獲取的數據。
6.根據權利要求1所述的一種基于ORM的分布式全局緩存系統,其特征在于:所述步驟(3)中的json格式的單個數據獲取的方法為:
(1)如果key是按唯一字段緩存或按組緩存的字段,那么拼接緩存key名,global_conf_key_value;
(2)查詢全局變量中是否已有緩存key和對應數據;
(3)如果有緩存key且生成緩存key的數據小于5秒,則直接返回全局變量中緩存key對應的數據;
(4)全局變量沒有緩存key或全局變量中緩存key的數據獲取時間超過5秒,則從Redis中獲取緩存key的數據,并轉為json;
(5)如果Redis獲取數據失敗,則從備份緩存數據庫MongoDB中獲取緩存key的數據;
(6)將數據更新到全局參數對應的緩存key中,并記錄更新的時間,同時返回獲取的數據;
(7)如果key不是按唯一字段緩存,也不是按組緩存的字段,那么從所有數據獲取function_all取出表的所有json數據;
(8)把json數據按key-value進行一一比對,返回第一個符合條件的數據;
(9)若沒有數據,最終返回空數據。
7.根據權利要求1所述的一種基于ORM的分布式全局緩存系統,其特征在于:所述步驟(3)中的json格式的按條件符合篩選的多個配置的方法為:
(1)如果只傳入了一個key和value,且key是按組緩存的字段,那么拼接緩存key名,global_conf_key_value;
(2)查詢全局變量中是否已有緩存key和對應數據;
(3)如果有緩存key且生成緩存key的數據小于5秒,則直接返回全局變量中緩存key對應的數據;
(4)全局變量沒有緩存key或全局變量中緩存key的數據獲取時間超過5秒,則從Redis中獲取緩存key的數據,并轉為json;
(5)如果Redis獲取數據失敗,則從備份緩存數據庫MongoDB中獲取緩存key的數據;
(6)將數據更新到全局參數對應的緩存key中,并記錄更新的時間,同時返回獲取的數據;
(7)如果傳入了多個key和value,或者只傳入一個key但key不是按組緩存的字段,那么從function_all取出表的所有json數據;
(8)把json數據按多個key-value進行一一比對,返回所有符合條件的數據;
(9)若沒有數據,最終返回空數據。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海旭榮網絡科技有限公司,未經上海旭榮網絡科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210305131.5/1.html,轉載請聲明來源鉆瓜專利網。





