SpringBoot Redis 多資料來源

2021-10-09 11:41:37 字數 3492 閱讀 8158

session存到redis後,cache和session是在乙個庫的;使用redis多資料配置可以分開。這樣ssession的redis伺服器可以單獨作為認證服務,多個業務模組可以配置單獨的cache庫,防止多模組key衝突的問題。原始碼《github》

增加redis2的配置
spring.redis.host=

192.168

.1.111

spring.redis.port=

6379

spring.redis.database=

1 spring.redis.timeout=

50000

spring.redis.lettuce.pool.max-active=

200 spring.redis.lettuce.pool.max-idle=

20 spring.redis.lettuce.pool.min-idle=

5 spring.redis.lettuce.pool.max-wait=

2000

spring.redis2.host=

192.168

.1.112

spring.redis2.port=

6379

spring.redis2.database=

1 spring.redis2.password=

預設redis配置不變正常實現

@bean

public redistemplate

redistemplate

(redisconnectionfactory redisconnectionfactory)

這裡getredistemplate(redisconnectionfactory)序列化單獨拿出來了,下邊還會用。

public redistemplate getredistemplate

(redisconnectionfactory redisconnectionfactory)

接下來實現redis2的redistemplate

@primary

@bean

("redistemplate2"

)public redistemplate

redistemplate2

(@value

("$"

)int database,

@value

("$"

)long timeout,

@value

("$"

)int maxactive,

@value

("$"

)int maxwait,

@value

("$"

)int maxidle,

@value

("$"

)int minidle,

@value

("$"

) string hostname,

@value

("$"

)int port,

@value

("$"

) string password)

genericobjectpoolconfig genericobjectpoolconfig =

newgenericobjectpoolconfig()

; genericobjectpoolconfig.

setmaxtotal

(maxactive)

; genericobjectpoolconfig.

setminidle

(minidle)

; genericobjectpoolconfig.

setmaxidle

(maxidle)

; genericobjectpoolconfig.

setmaxwaitmillis

(maxwait)

; lettucepoolingclientconfiguration.lettucepoolingclientconfigurationbuilder builder = lettucepoolingclientconfiguration.

builder()

; builder.

poolconfig

(genericobjectpoolconfig)

; builder.

commandtimeout

(duration.

ofseconds

(timeout));

lettuceconnectionfactory connectionfactory =

newlettuceconnectionfactory

(configuration, builder.

build()

);connectionfactory.

afterpropertiesset()

;return

getredistemplate

(connectionfactory)

;}

在例項化redis2的redistemplate時需要引入乙個包,物件池genericobjectpoolconfig。

>

>

org.apache.commonsgroupid

>

>

commons-pool2artifactid

>

dependency

>

又建立了乙個redis連線redistemplate2;目前就直接可以注入使用了。

@autowired

@qualifier

("redistemplate"

)private redistemplate

redistemplate;

@autowired

@qualifier

("redistemplate2"

)private redistemplate

redistemplate2;

還是比較麻煩因為有兩個redistemplate 所以注入要指定bean名稱。再有session的redis庫一般也不會直接操作。所以在session的redistemplate2(把redis2庫作為session庫)的bean上增加註解@primary。這樣session預設使用的就是@primary註解的。

@autowired

private redistemplate

redistemplate;

這樣在注入redistemplate 就是cache庫的。跟單資料來源並沒有任何區別。

Spring Boot Redis 資料快取

之前都是在spring mvc中使用redis,這裡記錄在spring boot中使用redis作為資料快取的過程。參考spring boot整合spring data jpa,搭建專案。本次是在docker中部署redis,從中直接pull官方的redis映象,啟動redis。使用redisdes...

spring boot redis發布訂閱

1.pom 依賴 org.springframework.boot spring boot starter data redis redis.clients jedis 2.配置 redis host 10.5.6.13 port 6379 password sensetime timeout 10...

Spring Boot Redis集群案例

1 配置redis配置檔案 port 6379 daemonize yes bind是繫結ip,0.0.0.0是代表任何ip bind 0.0.0.0 保護模式 protected mode no 新增節點 cluster enabled yes cluster配置檔名,該檔案屬於自動生成,僅用於快...