還是一如既往先把結(jié)構(gòu)圖放出來,上上個版本添加了redis的緩存,但是不滿足我的需求,因為公司有項目要求是分布式所以呢,這里我就增加了mongoDb進行緩存分布式,好了先看結(jié)構(gòu)圖(1)。
總的來說比較蛋疼,因為從來沒有使用過mongoDB,從安裝,到轉(zhuǎn)為windows服務(wù),設(shè)置權(quán)限等等,好吧這都是題外話。
在寫這個MongoDB版本的時候遇到的一些問題,我先總結(jié)下:
1.MongoDb版本是官網(wǎng)最新版3.4.4,官方驅(qū)動為2.4.3,首先我的項目是以GUID做為主鍵,在往MongonDB中插入時遇到的是將GUID生成了MongoDB的LUUID格式產(chǎn)生了這樣的格式(2)并且和我的數(shù)據(jù)庫不同(3)當然redis也不同(4)。
a)帶著問題我們?nèi)ソ鉀Q查了文檔發(fā)現(xiàn)原來因為bson的鍵要標識成GUID,并且格式要轉(zhuǎn)為string,既然知道問題了就去解決找到我的GUID主鍵,如下圖(5):
在主鍵上加上 [BsonId(IdGenerator = typeof(GuidGenerator)), BsonRepresentation(BsonType.String)]這段就可以了,看了下效果確實可以了(6)。
2.但是在測試過程中查詢的時候卻找不到,一查原來我的數(shù)據(jù)庫redis的id值都不一樣,這又是怎么回事?
b)原來mongoDB生成的GUID和C#生成的GUID的進制是不一樣的,為了解決這個問題,Google了一下,找到了一個腳本,把這個js腳本放在mongoDB里面執(zhí)行一下,然后生成的GUID就和數(shù)據(jù)庫的一樣了。如圖(7):
然后生成的_id就和我數(shù)據(jù)redis的一樣了。(8)(9)
解決完成這些問題后開始寫自己的封裝類。
希望大家多給出建議,博主也是第一次玩mongoDB,如果有好的學習資源也請推薦給博主。
第一步創(chuàng)建連接:
View Code
第二步創(chuàng)建DB:
View Code
然后呢獻上自己的封裝helper:
延伸閱讀
學習是年輕人改變自己的最好方式