redis結構設計及針對msyql相關查詢實現考慮

2021-06-10 13:52:31 字數 1165 閱讀 9192

針對專案需求,以下主要針對物件及相關操作進行分析。

ø 物件儲存:

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...