天天看點

springBoot之RedisTemplate和StringRedisTemplate的差別

二者差別

1. 兩者的關系是StringRedisTemplate繼承RedisTemplate。

springBoot之RedisTemplate和StringRedisTemplate的差別

2. 兩者的資料是不共通的;

StringRedisTemplate隻能管理StringRedisTemplate裡面的資料,RedisTemplate隻能管理RedisTemplate中的資料。

3. 序列化方式不同

StringRedisTemplate預設采用的是String的序列化政策,儲存的key和value都是采用此政策序列化儲存的。

RedisTemplate預設采用的是JDK的序列化政策,儲存的key和value都是采用此政策序列化儲存的。

RedisTemplate的使用,示例代碼是springboot的整合redis方式的玩法

springBoot之RedisTemplate和StringRedisTemplate的差別

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

@RunWith

(SpringRunner.

class

)

@SpringBootTest

public

class

SpringbootDataRedisApplicationTests {

@Resource

private

RedisTemplate redisTemplate;

@Test

public

void

contextLoads1() {

redisTemplate.opsForValue().set(

"zhuzhu3"

new

Student(

"jack"

"usa"

));

Student stu = (Student) redisTemplate.opsForValue().get(

"zhuzhu3"

);

System.out.println(stu.getName()+

"!!!"

);

}

}

注意:

1:使用@Resource注解不要用@Autowired注解

2:RedisTemplate使用的序列類在在操作資料的時候,比如說存入資料會将資料先序列化成位元組數組

然後再存入Redis資料庫,這個時候打開Redis檢視的時候,你會看到你的資料不是以可讀的形式,展現的,而是以位元組數組顯示,如下圖

springBoot之RedisTemplate和StringRedisTemplate的差別

StringRedisTemplate使用,示例代碼是springboot的整合redis方式的玩法.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

@RunWith

(SpringRunner.

class

)

@SpringBootTest

public

class

SpringbootDataRedisApplicationTests {

@Autowired

private

StringRedisTemplate redisTemplate;

@Test

public

void

contextLoads1() {

redisTemplate.opsForValue().set(

"name"

"jack"

);

System.out.println(redisTemplate.opsForValue().get(

"name"

));

}

}

注意:StringRedisTemplate規定key是String類型值也是String類型

總結:

當你的redis資料庫裡面本來存的是字元串資料或者你要存取的資料就是字元串類型資料的時候,那麼你就使用StringRedisTemplate即可。

但是如果你的資料是複雜的對象類型,而取出的時候又不想做任何的資料轉換,直接從Redis裡面取出一個對象,那麼使用RedisTemplate是更好的選擇。

繼續閱讀