redis主從多長(zhǎng)時(shí)間同步一次 Java工程師是如何使用Redis的?
Java工程師是如何使用Redis的?在分布式和微服務(wù)架構(gòu)遍地開花的實(shí)踐中,Redis一直是分布式緩存的首選,可謂經(jīng)久不衰,獨(dú)樹一幟。Redis運(yùn)行在內(nèi)存上,支持持久化NoSql數(shù)據(jù)庫。它是目前最流行
Java工程師是如何使用Redis的?
在分布式和微服務(wù)架構(gòu)遍地開花的實(shí)踐中,Redis一直是分布式緩存的首選,可謂經(jīng)久不衰,獨(dú)樹一幟。Redis運(yùn)行在內(nèi)存上,支持持久化NoSql數(shù)據(jù)庫。它是目前最流行的NoSQL數(shù)據(jù)庫之一,也被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。
為什么使用Redis?Redis不僅支持簡(jiǎn)單的k/v數(shù)據(jù),還提供了list、set、zset、hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。Redis支持主從模式應(yīng)用。Redis支持?jǐn)?shù)據(jù)持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟時(shí)可以再次加載使用。Redis單個(gè)值的最大限制是1GB,memcached只能存儲(chǔ)1MB的數(shù)據(jù)。由于種種原因,Redis成為了我們緩存架構(gòu)的首選,我也是在開始碼農(nóng)生涯的時(shí)候接觸到了Redis,不過當(dāng)時(shí)使用起來還是比較簡(jiǎn)單的。
當(dāng)初由于互聯(lián)網(wǎng)團(tuán)隊(duì)的初期建設(shè),各種中間件都需要自己搭建,包括Redis。我們用Docker搭建了一個(gè)Redis集群,采用主從式Redis架構(gòu),然后用Sentinel模式監(jiān)控Redis集群,也是通過Sentinel使用。通過Spring或Spring Boot的sentry連接連接Redis,將其注冊(cè)為Bean,然后使用序列化的鍵值結(jié)構(gòu)緩存所需的數(shù)據(jù)。由于領(lǐng)導(dǎo)風(fēng)格的原因,我們只允許使用Key-Value的基本功能來操作Redis。至于原因,沒有進(jìn)一步研究。
然后,他跳到了現(xiàn)在的公司,公司把Redis封裝成基礎(chǔ)服務(wù),而業(yè)務(wù)團(tuán)隊(duì)可以通過加密字符串直接連接,基礎(chǔ)架構(gòu)團(tuán)隊(duì)負(fù)責(zé)背后的高可用、主從分片和容災(zāi)。基礎(chǔ)架構(gòu)團(tuán)隊(duì)提供的操作方法并不局限于使用Key-Value的get、set、delete等方法,而是提供了Redis幾乎所有的命令,包括inc、sadd等計(jì)數(shù)和集合操作。當(dāng)然,有了這些,對(duì)程序員的要求就更高了,在合適的場(chǎng)景下選擇合適的命令進(jìn)行操作也不容易。
或許,使用R
redis某個(gè)主節(jié)點(diǎn)掛了后,會(huì)變?yōu)閺墓?jié)點(diǎn)么?
如果是搭車如果構(gòu)建了主從節(jié)點(diǎn),那么如果主節(jié)點(diǎn)被掛起,從節(jié)點(diǎn)仍然可以使用,但是它不會(huì)成為從節(jié)點(diǎn),除非它是redis集群。