針對專案需求,以下主要針對物件及相關操作進行分析。
ø 物件儲存:
redis物件儲存有三種方案,考慮到操作的便利及儲存效率,專案採用序列化儲存和hash儲存。
進行hash儲存時,首先需對物件進行拆分為field-value形式,利用物件屬性作為fileld,value作為物件屬性值。查詢時首先獲得field-value鍵值對,再進行物件組裝。參見redisservice介面hmset、hgetall方法
序列化儲存較為便利,只需對物件進行序列化,獲取時進行反序列化即可,但無法操作物件屬性。參見redisservice介面set/getobject方法。
物件儲存key值的定義,一般情況下採用id作為唯一識別,如talk:2577,若該物件經常根據其中一屬性進行操作,可採取以下方法:
l 進行額外資料定義,建立id與此屬性的對映
l 結合mysql,通過mysql獲取id列表,之後根據id查詢快取
key-value
儲存不能提供如
sql那樣複雜的查詢,
redis
基本只能提供簡單的查詢,上述操作遠不能滿足系統對於資料的操作,對於
mysql
的聯合查詢等複雜操作,需要在
redis,則對
talk
相關屬性建立另外對映。
ø 物件更新:
針對物件的不同儲存型別具有不同的更新方法:
hash
儲存:利用
key、
field
(物件屬性)進行修改。若未提供物件
id,則需先獲取
id,進而進行修改
序列化儲存:根據
id獲取物件,修改完再進行儲存。
ø 查詢
l findbyid:根據id查詢
解決方案:可直接查詢
l findall:查詢所有物件
解決方案:利用key值為talk:*查詢即可
l findbyproperty根據單個屬性查詢
解決方案:方法一,id與屬性對映,進而獲取物件。方法二,結合mysql
l findbyexample根據多個屬性查詢
解決方案:方法一:每個屬性做對映,進而求結果交集。方法二,結合mysql獲取id,進而獲取物件
l criteria或detachedcriteria查詢以及聯合查詢等複雜查詢
redis資料庫結構設計
之前遊戲開發服務端都是用純c 來寫,現在很多寫遊戲伺服器越來越傾向指令碼語言,因為用c 來寫一些邏輯的確是痛苦之極,當然如果追求效率的還是用c c 實現更好。最近時間自己通過研究了解雲風寫的skynet框架學習了lua,研究skynet其實是想把這框架用到公司現在遊戲專案裡替換掉現在用的乙個純c 框...
高階結構設計
1.軟體設計引論 2.結構化設計 3.物件導向設計 物件導向設計方法的特點 通過對實際問題的分析,從中抽象出物件,再使用程式語言來表現它 物件導向設計方法的過程 識別物件中的子物件,並識別出對於子物件的操作,然後再根據子物件的操作開發出乙個系統 結構化設計和物件導向設計共有特性 1.將乙個系統分解成...
迴圈結構設計
c語言有2種常用的迴圈結構,分別是for迴圈和while迴圈。其中while迴圈使用的頻率相對較多,下面我們先看for迴圈。for迴圈 for 這是乙個死迴圈,何為死迴圈,就是永不停止的迴圈。比如for 分割線 int i for i 0 i 10 i 該語句表示,迴圈列印10次hello worl...