【问题标题】:Dynamically creating RedisTemplate for connecting with different Redis server动态创建 RedisTemplate 用于连接不同的 Redis 服务器
【发布时间】:2017-05-06 18:21:21
【问题描述】:
我的应用程序基于 Spring Boot 构建,并由 Redis 数据存储提供支持。目前我只连接到单个 redis 服务器,并且该服务器的属性(主机/端口)在 bootstrap.yml 中定义。
我想通过为每个客户使用单独的 Redis 服务器来支持多租户。为此,我需要在运行时动态连接各种不同的 redis 服务器。 RedisTemplate 和 JedisConnecitonFactory 可以吗?
【问题讨论】:
标签:
redis
spring-data
spring-data-redis
【解决方案1】:
总之
不需要多个RedisTemplate 实例;实现路由RedisConnectionFactory。
说明
RedisTemplate 使用底层RedisConnectionFactory 来获取连接。要将 Redis 操作路由到不同的连接,只需实现 RedisConnectionFactory 的路由变体。 RedisTemplate 要求关联的RedisConnectionFactory 为每个操作提供一个RedisConnection。
使用交易时需要注意。事务使用将 Redis 连接绑定到调用线程,RedisTemplate 在同一连接上有效工作,直到事务完成。
查看AbstractRoutingDataSource,了解 JDBC 连接如何支持数据源路由。路由RedisConnectionFactory 可以遵循相同的模式。