這篇文章主要介紹redis有哪些用途及優(yōu)缺點,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、武鄉(xiāng)網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
業(yè)界常用MySQL+Memcached這樣的存儲架構(gòu),但是隨著訪問量的不斷攀蛇,隨之而來的問題也有很多。
1、MySQL需要不停的拆庫拆表,Memcached也需要跟著不斷擴容;
2、Memcached與MySQL之間存在著一定的數(shù)據(jù)不一致的現(xiàn)象;
3、如果Memcached容易命中率變低,直接穿透到MySQL,導致數(shù)據(jù)庫無法支撐;
說起Redis,很多開發(fā)者都只知道它和Memcached一樣是非關(guān)系型數(shù)據(jù)庫,可以直接存儲K-V形式的數(shù)據(jù),但是相比起Memcached來說,他也有很多不同的地方。
1、Redis不僅僅只支持簡單的K-V形式的數(shù)據(jù)存儲,還支持list、set、hash、zset等等集合類數(shù)據(jù)的存儲;
2、Redis支持實時的數(shù)據(jù)備份,及時宕機,也可以把數(shù)據(jù)恢復過來;
3、Redis支持數(shù)據(jù)的持久化,可以存放在內(nèi)存memory中的數(shù)據(jù)直接保存在磁盤上;
String、Hash、Set、List、SortedSet、pub/sub、Transactions。
1、String:Strings就是一個最最簡單的Key-Value形式存儲的變量。其中Value既可以是數(shù)字也可以是字符串。其實現(xiàn)方式是在Redis內(nèi)部默認存儲一個字符串,被redisObject引用,當檢測到數(shù)字操作如自增自減incr、decr等等命令時,自動轉(zhuǎn)化為數(shù)字進行計算,計算完畢后再轉(zhuǎn)化為String存儲起來。
2、Hash:Hash存儲是鍵值對的value。即Key-Hash,而Hash又是一個k-v的結(jié)構(gòu),如果使用的Memcached,則需要把整個Hash打包存儲在內(nèi)存中,如果需要查詢其中某個值,還要全部取出整個Hash,再查找對應(yīng)值。而Redis可以直接通過命令獲取到Value,大大提高了性能。 其實現(xiàn)原理:當成員較少時,Redis為了節(jié)約內(nèi)存會采用類似一維數(shù)組的緊湊存儲,而當對象較多時,則直接轉(zhuǎn)為HashMap存儲。
3、Set:Set是一個無序的天然去重的集合,即Key-Set。此外還提供了交集、并集等一系列直接操作集合的方法,對于求共同好友、共同關(guān)注什么的功能實現(xiàn)特別方便。其底層是靠HashMap實現(xiàn)的,其中value為null;
4、List:List是一個有序可重復的集合,其遵循FIFO的原則,底層是依賴雙向鏈表實現(xiàn)的,因此支持正向、反向雙重查找。通過List,我們可以很方面的獲得類似于最新回復這類的功能實現(xiàn)。
5、SortedSet:類似于java中的TreeSet,是Set的可排序版。此外還支持優(yōu)先級排序,維護了一個score的參數(shù)來實現(xiàn)。其底層主要依賴HashMap來實現(xiàn)的,通過維持插入的數(shù)值和Score優(yōu)先級的映射來進行排序。
6、pub/sub:發(fā)布訂閱,類似于消息隊列mq。可以選擇對某個Key進行訂閱,一旦這個key發(fā)布了一些消息,則所有訂閱了這個Key的對象就可以收到這個消息。主要可以用在實時消息系統(tǒng)上,例如聊天之類的。
7、Transactions:NOSQL不支持事務(wù),但是通過提供了打包執(zhí)行的功能,即這個包里面的所有命令必須要一起執(zhí)行,此外還可以鎖定某個Key,在打包執(zhí)行命令時如果檢測到這個Key發(fā)生了變化,則直接回滾。
redis使用內(nèi)存提供存儲,通過持久化功能保存數(shù)據(jù)。且針對request是單線程操作。這一系列特點使得redis具有十分神奇的功能。
1、查找最新的回復。
如果在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,這就需要使用select * from table where name="" order by time desc limit 100;這十分消耗數(shù)據(jù)庫性能,但是通過Redis,就可以直接在Redis里面通過Id創(chuàng)建一個List,指定長度1w,當需要查找時,直接輸出該list的后100條記錄。
2、排行問題
常見的排行問題,例如最熱話題、游戲排名等等,這些都可以通過Redis來輕松實現(xiàn),直接使用ZRank即可得到。
3、刪除過期數(shù)據(jù)
Redis不是真正意義上的可持久化數(shù)據(jù)庫,可以給數(shù)據(jù)加上一個有效時間,在有效時間超過時,Redis會自動刪除對應(yīng)數(shù)據(jù)。
以上是Redis有哪些用途及優(yōu)缺點的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當前題目:Redis有哪些用途及優(yōu)缺點
文章URL:http://muchs.cn/article26/jsohjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站收錄、微信公眾號、品牌網(wǎng)站設(shè)計、動態(tài)網(wǎng)站、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)