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

個常見使用場景,redis使用場景

Redis是啥?

個常見使用場景,redis使用場景


想要了解Redis,先從Redis是什么?為何要用Redis?有哪些特性,以及其集群架構(gòu)來幾個方面來了解 。Redis 簡介Redis 是一個開源(BSD 許可)的、內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息中間件 。為什么要用 Redis在高并發(fā)場景下,如果需要經(jīng)常連接結(jié)果變動頻繁的數(shù)據(jù)庫,會導(dǎo)致數(shù)據(jù)庫讀取及存取的速度變慢,數(shù)據(jù)庫壓力極大 。
因此我們需要通過緩存來減少數(shù)據(jù)庫的壓力,使得大量的訪問進來能夠命中緩存,只有少量的需要到數(shù)據(jù)庫層 。由于緩存基于內(nèi)存,可支持的并發(fā)量遠遠大于基于硬盤的數(shù)據(jù)庫 。所以對于高并發(fā)設(shè)計,緩存的設(shè)計是必不可少的一環(huán) 。而 Redis 作為比較熱門的內(nèi)存存儲系統(tǒng)之一,由于其對數(shù)據(jù)持久化的支持,種類豐富的數(shù)據(jù)結(jié)構(gòu),使其定位更傾向于內(nèi)存數(shù)據(jù)庫,適用于對讀寫效率要求都很高、數(shù)據(jù)處理業(yè)務(wù)復(fù)雜和對安全性要求較高的系統(tǒng) 。
Redis 特征單線程,利用 redis 隊列技術(shù)將訪問變?yōu)榇性L問,消除了傳統(tǒng)數(shù)據(jù)庫串行控制的開銷 。Redis 的線程模型:Redis 支持數(shù)據(jù)的持久化,包括 RDB 的全量持久化,或者 AOF 的增量持久化,從而使得Redis 掛了,數(shù)據(jù)是有機會恢復(fù)的 。也可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時候可以再次加載進行使用 。
分布式架構(gòu),讀寫分離 。支持的數(shù)據(jù)結(jié)構(gòu)豐富 。Redis 不僅僅支持簡單的 key-value 類型的數(shù)據(jù),同時還提供 list、set、zset、hash 等數(shù)據(jù)結(jié)構(gòu)的存儲 。Redis 支持數(shù)據(jù)的備份,提供成熟的主備同步,故障切換的功能,從而保證了高可用 。Redis Cluster 架構(gòu)Redis 搭建方式有很多種,本章主要介紹 Redis Cluster 集群構(gòu)建方式:Redis 3.0 之后版本支持 Redis Cluster 集群,Redis Cluster 采用無中心結(jié)構(gòu),每個節(jié)點保存數(shù)據(jù)和整個集群狀態(tài),每個節(jié)點都和其他所有節(jié)點連接 。
Redis Cluster 為了保證數(shù)據(jù)的高可用性,加入了主從模式,一個主節(jié)點對應(yīng)一個或多個從節(jié)點,主節(jié)點提供數(shù)據(jù)存取,從節(jié)點則是從主節(jié)點拉取數(shù)據(jù)備份,當這個主節(jié)點掛掉后,就會有這個從節(jié)點選取一個來充當主節(jié)點,從而保證集群不會掛掉 。主從結(jié)構(gòu),一是為了純粹的冗余備份,二是為了提升讀性能,比如很消耗性能的 SORT 就可以由從服務(wù)器來承擔(dān) 。
有些程序員一直堅持反對使用redis怎么辦?
個常見使用場景,redis使用場景


分享大佬的回答,似乎很有道理 。不要告訴我們用不用redis,你得告訴我們你為什么想要用redis,不用redis業(yè)務(wù)會有什么問題?天下沒有免費的午餐,不動腦子直接上緩存/NOSQL可能會帶來更多更嚴重的問題 。單一數(shù)據(jù)庫最大的好處在于事務(wù)性實現(xiàn)簡單,由數(shù)據(jù)庫自己保證 。舉個簡單的例子,下訂單需要扣除一個庫存,然后插入一條訂單條目,如果庫存和訂單都是數(shù)據(jù)庫表項的話這個事務(wù)是無懈可擊的,如果庫存在redis里,訂單條目是MySQL,通常就需要先寫redis,成功之后再寫數(shù)據(jù)庫,如果寫數(shù)據(jù)庫失敗了還需要回滾redis,如果最后這個回滾因為網(wǎng)絡(luò)之類的原因失敗了,就會多扣一個庫存 。
數(shù)據(jù)多的時候為什么要使用redis而不用mysql?
個常見使用場景,redis使用場景


通常來說,當數(shù)據(jù)多、并發(fā)量大的時候,架構(gòu)中可以引入Redis,幫助提升架構(gòu)的整體性能,減少Mysql(或其他數(shù)據(jù)庫)的壓力,但不是使用Redis,就不用MySQL 。因為Redis的性能十分優(yōu)越,可以支持每秒十幾萬此的讀/寫操作,并且它還支持持久化、集群部署、分布式、主從同步等,Redis在高并發(fā)的場景下數(shù)據(jù)的安全和一致性,所以它經(jīng)常用于兩個場景:緩存經(jīng)常會被查詢,但是不經(jīng)常被修改或者刪除的數(shù)據(jù);比如數(shù)據(jù)字典,業(yè)務(wù)數(shù)據(jù)中的熱點數(shù)據(jù);這樣不僅提升查詢效率,還可以減少數(shù)據(jù)庫的壓力;經(jīng)常被查詢,實時性要求不高數(shù)據(jù),比如網(wǎng)站的最新列表、排行榜之類的數(shù)據(jù),只需要定時統(tǒng)計一次,然后把統(tǒng)計結(jié)果放到Redis中提供查詢(請不要使用select top 10 from xxxx) 。

推薦閱讀