不想寫太詳細了,簡單說一下本身的收穫吧node
1,springboot整合redis集羣很是簡單,在配置文件中配置參數redis
spring: redis: # cluster: # nodes: 11.11.11.11:9001,11.11.11.11:9002,11.11.11.11:9003,11.11.11.11:9004,11.11.11.11:9005,11.11.11.11:9006 # max-redirects: 3 database: 0 host: 10.32.16.117 port: 6379 # password: 123456 timeout: 0 pool: max-active: 8 max-wait: -1 max-idle: 8 min-idle: 0
而後在想要操做redis的地方注入便可spring
@Autowired StringRedisTemplate redisTemplate;
簡直太簡單了。緩存
上面的配置是配置文件是鏈接單機的,集羣的話,把上面的註釋放開就行,redis會默認走集羣springboot
2,還有就是主從拷貝,由於我發現我往集羣中發一條數據,會在一個主節點中理科看到數據,但從節點看不到。查閱資料,發現緣由以下:數據結構
redis怎麼進行主從複製呢?redis複製主要是經過master server持久化的rdb文件實現的。master server 先dump出內存快照文件,而後將rdb文件傳給slave server,slave server 根據rdb文件重建內存表。redis複製過程以下:併發
一、slave server啓動鏈接到master server以後,salve server主動發送SYNC命令給master servermaven
二、master server接受SYNC命令以後,判斷,是否有正在進行內存快照的子進程,若是有,則等待其結束,不然,fork(岔)一個子進程,子進程把內存數據保存爲文件,併發送給slave serverspring-boot
三、master server子進程進程作數據快照時,父進程能夠繼續接收client端請求寫數據,此時,父進程把新寫入的數據放到待發送緩存隊列中server
四、slave server 接收內存快照文件以後,清空內存數據,根據接收的快照文件,重建內存表數據結構
五、master server把快照文件發送完畢以後,發送緩存隊列中保存的子進程快照期間改變的數據給slave server,slave server作相同處理,保存數據一致性
六、master server 後續接收的數據,都會經過步驟1創建的鏈接,把數據發送到slave server
能夠看到,這個過程是有時間的,因此從節點不是馬上看到數據的。
maven依賴: 錯誤: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 正確: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.7.RELEASE</version> </dependency>