小編給大家分享一下使用redis有什么好處,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
(1)速度快,因為數(shù)據(jù)存在內(nèi)存中,類似于HashMap,HashMap的優(yōu)勢就是查找和操作的時間復雜度都是O(1)
(2)支持豐富數(shù)據(jù)類型,支持string,list,set,sortedset,hash
常用命令:set/get/decr/incr/mget等;
應用場景:String是最常用的一種數(shù)據(jù)類型,普通的key/value存儲都可以歸為此類;
實現(xiàn)方式:String在redis內(nèi)部存儲默認就是一個字符串,被redisObject所引用,當遇到incr、decr等操作時會轉(zhuǎn)成數(shù)值型進行計算,此時redisObject的encoding字段為int。
常用命令:hget/hset/hgetall等
應用場景:我們要存儲一個用戶信息對象數(shù)據(jù),其中包括用戶ID、用戶姓名、年齡和生日,通過用戶ID我們希望獲取該用戶的姓名或者年齡或者生日;
實現(xiàn)方式:Redis的Hash實際是內(nèi)部存儲的Value為一個HashMap,并提供了直接存取這個Map成員的接口。如圖所示,Key是用戶ID,value是一個Map。這個Map的key是成員的屬性名,value是屬性值。這樣對數(shù)據(jù)的修改和存取都可以直接通過其內(nèi)部Map的Key(Redis里稱內(nèi)部Map的key為field),也就是通過key(用戶ID)+field(屬性標簽)就可以操作對應屬性數(shù)據(jù)。當前HashMap的實現(xiàn)有兩種方式:當HashMap的成員比較少時Redis為了節(jié)省內(nèi)存會采用類似一維數(shù)組的方式來緊湊存儲,而不會采用真正的HashMap結構,這時對應的value的redisObject的encoding為zipmap,當成員數(shù)量增大時會自動轉(zhuǎn)成真正的HashMap,此時encoding為ht。
常用命令:lpush/rpush/lpop/rpop/lrange等;
應用場景:Redislist的應用場景非常多,也是Redis最重要的數(shù)據(jù)結構之一,比如twitter的關注列表,粉絲列表等都可以用Redis的list結構來實現(xiàn);
實現(xiàn)方式:Redislist的實現(xiàn)為一個雙向鏈表,即可以支持反向查找和遍歷,更方便操作,不過帶來了部分額外的內(nèi)存開銷,Redis內(nèi)部的很多實現(xiàn),包括發(fā)送緩沖隊列等也都是用的這個數(shù)據(jù)結構。
常用命令:sadd/spop/smembers/sunion等;
應用場景:Redisset對外提供的功能與list類似是一個列表的功能,特殊之處在于set是可以自動排重的,當你需要存儲一個列表數(shù)據(jù),又不希望出現(xiàn)重復數(shù)據(jù)時,set是一個很好的選擇,并且set提供了判斷某個成員是否在一個set集合內(nèi)的重要接口,這個也是list所不能提供的;
實現(xiàn)方式:set的內(nèi)部實現(xiàn)是一個value永遠為null的HashMap,實際就是通過計算hash的方式來快速排重的,這也是set能提供判斷一個成員是否在集合內(nèi)的原因。
以上是“使用redis有什么好處”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞標題:使用redis有什么好處-創(chuàng)新互聯(lián)
文章分享:http://chinadenli.net/article26/cdjhcg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、App開發(fā)、電子商務、域名注冊、靜態(tài)網(wǎng)站、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)