好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

springboot连接redis并动态切换database的实现方法

众所周知,redis多有个db,在jedis中可以使用select方法去动态的选择redis的database,但在springboot提供的StringRedisTemplate中确,没有该方法,好在StringRedisTemplate预留了一个setConnectionFactory方法,本文主为通过修改ConnectionFactory从而达到动态切换database的效果。

springboot连接redis

pom.xml文件中引入spring-boot-starter-redis,版本可自行选择

?

1

2

3

4

5

<dependency>

     <groupId>org.springframework.boot</groupId>

     <artifactId>spring-boot-starter-redis</artifactId>

     <version> 1.3 . 8 .RELEASE</version>

</dependency>

application.properties

?

1

2

3

4

5

6

7

8

9

10

#redis配置

spring.redis.database= 0

spring.redis.host= 127.0 . 0.1

spring.redis.port= 6379

spring.redis.password=pwd

spring.redis.timeout= 0

spring.redis.pool.max-active= 8

spring.redis.pool.max-idle= 8

spring.redis.pool.max-wait=- 1

spring.redis.pool.min-idle= 0

TestCRedis.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@RunWith (SpringJUnit4ClassRunner. class )

@SpringBootTest (classes = Application. class )

public class TestCRedis{

 

     protected static Logger LOGGER = LoggerFactory.getLogger(TestCRedis. class );

     @Autowired

     private StringRedisTemplate stringRedisTemplate;

     @Test

     public void t1(){

         ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();

         stringStringValueOperations.set( "testkey" , "testvalue" );

         String testkey = stringStringValueOperations.get( "testkey" );

         LOGGER.info(testkey);

     }

}

运行TestCRedis.t1(),控制台打印[testvalue]redis连接成功

redis动态切换database

首先使用redis-cli,在redis的0、1、2三个库中,分别设置test 的值,分别为;0、1、2

TestCRedis.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

@RunWith (SpringJUnit4ClassRunner. class )

@SpringBootTest (classes = Application. class )

public class TestCRedis{

 

     protected static Logger LOGGER = LoggerFactory.getLogger(TestCRedis. class );

     @Autowired

     private StringRedisTemplate stringRedisTemplate;

     @Test

     public void t1(){

         ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();

         stringStringValueOperations.set( "testkey" , "testvalue" );

         String testkey = stringStringValueOperations.get( "testkey" );

         LOGGER.info(testkey);

     }

     public void t2() {

         for ( int i = 0 ; i <= 2 ; i++) {

             JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory();

             jedisConnectionFactory.setDatabase(i);

             stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);

             ValueOperations valueOperations = stringRedisTemplate.opsForValue();

             String test = (String) valueOperations.get( "test" );

             LOGGER.info(test);

         }

}

运行TestCRedis.t2(),控制台分别打印 [0、1、2],database切换成功

到此这篇关于springboot连接redis并动态切换database的文章就介绍到这了,更多相关springboot连接redis动态切换database内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://www.cnblogs.com/yuwentims/articles/9736905.html

查看更多关于springboot连接redis并动态切换database的实现方法的详细内容...

  阅读:25次