springboot+redis

不想寫太詳細了,簡單說一下本身的收穫吧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>

相關文章
相關標籤/搜索