緩存中命名keys時,應該有什麼命名規則來命名,方便後期調用以及維護?
使用memcached或者redis時,緩存中命名keys時,應該有什麼命名規則來命名,方便後期調用以及維護?
我推薦一個通用的命名方式:
&
&
&
後面的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緩存 |