MongoDB 遷移到Redis記錄日誌 1
眾所周知MongoDB使用BSON構建資料,然後使用者呼叫MongoDB的介面,以BSON為引數,將儲存到本地
Redis則是鍵值對的方式,支援的資料型別有五種:
1、string(字串);
2、hash(雜湊);
3、list(列表);
4、set(集合);
5、zset(sorted set:有序集合)。
背景:
原先為了將資料寫入BSON,編寫了一個數據類,裡面有write_int、write_float、write_string、write_int_array等函式介面,使用者呼叫這些介面,將資料寫入到這個類中(比如一個使用者的手機號碼、身份證號、當前等級、經驗值等),採用使用者資訊來舉例,新建一個類,可以儲存一個使用者的所有資訊。
編寫了一個數據操作類,這個類的作用是
1、將資料類轉換成BSON,或將BSON轉換成資料類;
2、將BSON資料本地化儲存。
經過一些調研,想出兩種方案
一、重新編寫出一套資料操作方法
即重新編寫出一套write_int、write_float、write_string、write_int_array等函式介面,具體做法是定義一個基類,在基類中定義純虛擬函式write_int、write_float、write_string、write_int_array等,然後實現一個Redis類繼承這個基類,並在Redis類中實現具體的函式介面,以後專案需要儲存資料,就採用多型的方式呼叫這一套介面。
二、採用BSON格式儲存資訊到Redis
這個方案實現起來比較簡單,而且對原專案改動較小。方法是將原先的資料庫操作類中的資料庫操作,改為Redis,但是這裡涉及到了MongoDB指令轉換成Redis指令的問題,比如MongoDB如果有一個語句"db.userInfo.find({"age": 22});",那麼Redis該怎麼把這個指令轉換成自身指令實現該有的功能?