StringRedisTemplate操作redis數據


StringRedisTemplate操作redis數據

StringRedisTemplate與RedisTemplate區別點

  • 兩者的關系是StringRedisTemplate繼承RedisTemplate。

  • 兩者的數據是不共通的;也就是說StringRedisTemplate只能管理StringRedisTemplate里面的數據,RedisTemplate只能管理RedisTemplate中的數據。

  • 其實他們兩者之間的區別主要在於他們使用的序列化類:

    RedisTemplate使用的是JdkSerializationRedisSerializer    存入數據會將數據先序列化成字節數組然后在存入Redis數據庫。 

      StringRedisTemplate使用的是StringRedisSerializer

  • 使用時注意事項:
   當你的redis數據庫里面本來存的是字符串數據或者你要存取的數據就是字符串類型數據的時候,那么你就使用StringRedisTemplate即可。
   但是如果你的數據是復雜的對象類型,而取出的時候又不想做任何的數據轉換,直接從Redis里面取出一個對象,那么使用RedisTemplate是更好的選擇。
  • RedisTemplate使用時常見問題:

    redisTemplate 中存取數據都是字節數組。當redis中存入的數據是可讀形式而非字節數組時,使用redisTemplate取值的時候會無法獲取導出數據,獲得的值為null。可以使用 StringRedisTemplate 試試。

RedisTemplate中定義了5種數據結構操作

1
2
3
4
5
redisTemplate.opsForValue();   //操作字符串
redisTemplate.opsForHash();   //操作hash
redisTemplate.opsForList();   //操作list
redisTemplate.opsForSet();    //操作set
redisTemplate.opsForZSet();    //操作有序set
 

StringRedisTemplate常用操作

stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入數據和設置緩存時間  stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作  stringRedisTemplate.opsForValue().get("test")//根據key獲取緩存中的val  stringRedisTemplate.boundValueOps("test").increment(1);//val +1  stringRedisTemplate.getExpire("test")//根據key獲取過期時間  stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根據key獲取過期時間並換算成指定單位  stringRedisTemplate.delete("test");//根據key刪除緩存  stringRedisTemplate.hasKey("546545");//檢查key是否存在,返回boolean值  stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合  stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//設置過期時間  stringRedisTemplate.opsForSet().isMember("red_123", "1")//根據key查看集合中是否存在指定數據  stringRedisTemplate.opsForSet().members("red_123");//根據key獲取set集合
 

 

StringRedisTemplate的使用 

 springboot中使用注解@Autowired 即可

1
2
@Autowired
public StringRedisTemplate stringRedisTemplate;
1
<span style= "font-size: 16px;" ><strong>使用樣例:</strong></span>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@RestController
@RequestMapping ( "/user" )
public class UserResource {
     private static final Logger log = LoggerFactory.getLogger(UserResource. class );
     @Autowired
     private UserService userService;
     
     @Autowired
     public StringRedisTemplate stringRedisTemplate;
     
     @RequestMapping ( "/num" )
     public String countNum() {
         String userNum = stringRedisTemplate.opsForValue().get( "userNum" );
         if (StringUtils.isNull(userNum)){
             stringRedisTemplate.opsForValue().set( "userNum" , userService.countNum().toString());
         }
         return  userNum;
     }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM