緩存中命名keys時,應該有什麼命名規則來命名,方便後期調用以及維護?

使用memcached或者redis時,緩存中命名keys時,應該有什麼命名規則來命名,方便後期調用以及維護?


我推薦一個通用的命名方式:

&:&:&:&:...

&是你的應用程序的名稱,使用它作為前綴是為了以後可能多個服務共用一個redis時方便,省得配不同的DB號。

&是你的應用中使用緩存的類型區分,一個應用中有可能在多個不同的地方使用緩存,每個地方配一個不同的redis運維會瘋掉的。簡單用category區分一下就可以安全地共用同一個redis了。

後面的index1, index2都是跟service和category有關的,不同的service+category可以使用完全不同的index,數量和值的意義都可以不同。index一般來說就用資料庫的主鍵,或者你查詢時使用的所有條件就行。

分隔符在redis里習慣用冒號(:),但其實也並沒有這種強制性的約束,用.,用/都是很不錯的,像etcd、ZooKeeper當中就會用/,主要還是內部要統一。另外,要注意index1, index2這樣的字元串中不能包含分隔符,可以用一個簡單的轉義演算法來去掉這些字元:

def escape_key(k):
return k.replace("$", "$_").replace(".", "$+")
.replace(":", "$-").replace("/", "$$")

def unescape_key(k):
return k.replace("$$", "/").replace("$-", ":")
.replace("$+", ".").replace("$_", "$")

詳見 一種簡單的字元轉義演算法


可以使用封裝對象的方式來記錄表的key以方便管理;

最前面的key為描述,以分隔符分開,後面跟各個子標記的key,並用類和方法封裝;

像java中

可以使用一個enum枚舉值來封裝,value為string,即為功能描述字元串,枚舉中增加靜態方法用於獲取key,方法參數依次為枚舉名,和後續的不定數量的stringkey,方法內部用於拼裝產生字元串;

這樣方便管理和組裝key,挺不錯的


這樣的問題,搜索google,用不了google,用搜狗英文搜一下也可以。

Redis key naming conventions?


推薦閱讀:

Django框架應用中models.py文件與資料庫操作問題?
Django中提示TemplateDoesNotExist?
Django 多線程問題是怎麼回事?
用Django學習設計網站後台有什麼好書可以入門和深入學習?
為什麼感覺django很難呢?

TAG:Python | Redis | Django框架 | Memcached | memcached緩存 |