日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

個(gè)常見使用場景,redis使用場景( 二 )


緩存可以方便數(shù)據(jù)共享,比如我先用電腦網(wǎng)頁打開X東,選了兩件商品放到購物車?yán)锩妫俚卿浭謾C(jī)APP,也是可以看到購物車?yán)锩娴纳唐返?。判斷數(shù)據(jù)是否適合緩存到Redis中,可以從幾個(gè)方面考慮:會(huì)經(jīng)常查詢么?命中率如何?寫操作多么?數(shù)據(jù)大?。课覀兘?jīng)常采用這樣的方式將數(shù)據(jù)刷到Redis中:查詢的請求過來,現(xiàn)在Redis中查詢,如果查詢不到,就查詢數(shù)據(jù)庫拿到數(shù)據(jù),再放到緩存中,這樣第二次相同的查詢請求過來,就可以直接在Redis中拿到數(shù)據(jù);不過要注意【緩存穿透】的問題 。
緩存的刷新會(huì)比較復(fù)雜,通常是修改完數(shù)據(jù)庫之后,還需要對Redis中的數(shù)據(jù)進(jìn)行操作;代碼很簡單,但是需要保證這兩步為同一事務(wù),或最終的事務(wù)一致性 。高速讀寫常見的就是計(jì)數(shù)器,比如一篇文章的閱讀量,不可能每一次閱讀就在數(shù)據(jù)庫里面update一次 。高并發(fā)的場景很適合使用Redis,比如雙11秒殺,庫存一共就一千件,到了秒殺的時(shí)間,通常會(huì)在極為短暫的時(shí)間內(nèi),有數(shù)萬級(jí)的請求達(dá)到服務(wù)器,如果使用數(shù)據(jù)庫的話,很可能在這一瞬間造成數(shù)據(jù)庫的崩潰,所以通常會(huì)使用Redis(秒殺的場景會(huì)比較復(fù)雜,Redis只是其中之一,例如如果請求超過某個(gè)數(shù)量的時(shí)候,多余的請求就會(huì)被限流) 。
這種高并發(fā)的場景,是當(dāng)請求達(dá)到服務(wù)器的時(shí)候,直接在Redis上讀寫,請求不會(huì)訪問到數(shù)據(jù)庫;程序會(huì)在合適的時(shí)間,比如一千件庫存都被秒殺,再將數(shù)據(jù)批量寫到數(shù)據(jù)庫中 。所以通常來說,在必要的時(shí)候引入Redis,可以減少M(fèi)ySQL(或其他)數(shù)據(jù)庫的壓力,兩者不是替代的關(guān)系 。我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計(jì)、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注 。
如何用redis/memcache做Mysql緩存層?

個(gè)常見使用場景,redis使用場景


Redis的作者Salvatore Sanfilippo曾經(jīng)對這兩種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行過比較:1、Redis支持服務(wù)器端的數(shù)據(jù)操作:Redis相比Memcached來說,擁有更多的數(shù)據(jù)結(jié)構(gòu)和并支持更豐富的數(shù)據(jù)操作,通常在Memcached里,你需要將數(shù)據(jù)拿到客戶端來進(jìn)行類似的修改再set回去 。
這大大增加了網(wǎng)絡(luò)IO的次數(shù)和數(shù)據(jù)體積 。在Redis中,這些復(fù)雜的操作通常和一般的GET/SET一樣高效 。所以,如果需要緩存能夠支持更復(fù)雜的結(jié)構(gòu)和操作,那么Redis會(huì)是不錯(cuò)的選擇 。2、內(nèi)存使用效率對比:使用簡單的key-value存儲(chǔ)的話,Memcached的內(nèi)存利用率更高,而如果Redis采用hash結(jié)構(gòu)來做key-value存儲(chǔ),由于其組合式的壓縮,其內(nèi)存利用率會(huì)高于Memcached 。
3、性能對比:由于Redis只使用單核,而Memcached可以使用多核,所以平均每一個(gè)核上Redis在存儲(chǔ)小數(shù)據(jù)時(shí)比Memcached性能更高 。而在100k以上的數(shù)據(jù)中,Memcached性能要高于Redis,雖然Redis最近也在存儲(chǔ)大數(shù)據(jù)的性能上進(jìn)行優(yōu)化,但是比起Memcached,還是稍有遜色 。
具體為什么會(huì)出現(xiàn)上面的結(jié)論,以下為收集到的資料:1、數(shù)據(jù)類型支持不同與Memcached僅支持簡單的key-value結(jié)構(gòu)的數(shù)據(jù)記錄不同,Redis支持的數(shù)據(jù)類型要豐富得多 。最為常用的數(shù)據(jù)類型主要由五種:String、Hash、List、Set和Sorted Set 。Redis內(nèi)部使用一個(gè)redisObject對象來表示所有的key和value 。
redisObject最主要的信息如圖所示:type代表一個(gè)value對象具體是何種數(shù)據(jù)類型,encoding是不同數(shù)據(jù)類型在redis內(nèi)部的存儲(chǔ)方式,比如:type=string代表value存儲(chǔ)的是一個(gè)普通字符串,那么對應(yīng)的encoding可以是raw或者是int,如果是int則代表實(shí)際redis內(nèi)部是按數(shù)值型類存儲(chǔ)和表示這個(gè)字符串的,當(dāng)然前提是這個(gè)字符串本身可以用數(shù)值表示,比如:”123″ “456”這樣的字符串 。

推薦閱讀