1. 程式人生 > >RedisTemplate快取用法小記

RedisTemplate快取用法小記

1、下載一個客戶端:Redis Desktop Manager

2、redis的引用包:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>1.8.6.RELEASE</version>
</dependency>

3、redisTemplate裡面有如下幾種常用的形式:

(1) String型別

redisTemplate.opsForValue
()

(2) List型別

redisTemplate.opsForList()

(3) Hash鍵值對

redisTemplate.opsForHash()

(4) Set型別

redisTemplate.opsForSet()

(5) 有序Set型別

redisTemplate.opsForZSet()

4、我在開發中用過前面四個,分別簡單談一下用法:

(1) String型別:

  • 插入操作
UserInfo markIfFirstSync = new UserInfo();
userRedisTemplate.opsForValue().set
(CACHE_KEY, markIfFirstSync);
向redis中某個string型別的key下面插入一個物件。
  • 批量插入操作
public Map<String, OrgRelationInfo> mappingRelationRefresh = new HashMap<>();
redisTemplate.opsForValue().multiSet(mappingRelationRefresh);
往redis中某個String型別的key下面批量插入一個HashMap集合。
  • 獲取物件操作
  userRedisTemplate.opsForValue
().get(CACHE_NAME + CACHE_KEY_EXIST_PREFIX);
 從redis中獲取某個key下面的某個物件,如果不存在就返回null。
  • 批量獲取物件操作
  List<String> sourceIdList = new ArrayList<>();
  List<OrgRelationInfo> orgMappingRelationList = redisTemplate.opsForValue().multiGet(sourceIdList);
從redis中獲取多個key下面的多個物件,返回一個List列表,但是即使對應的key下面沒有值,這個**value也會返回**,不過是null,因此要判斷是否List都為空,不能夠用isEmpty直接判斷,而應該一個一個的判斷是否為空,才能判斷整體為空。

(2) List型別

  • 批量插入
List<OrgRelationInfo> remainOrgNodes = new ArrayList<>();
redisTemplate.opsForList().leftPushAll(CACHE_KEY, remainOrgNodes);
向redis的某個key下面的list列表裡面插入一個list列表,不會去重。
  • 批量取出
List<OrgRelationInfo> lastRemainOrgNodeList = redisTemplate.opsForList().range(CACHE_NAME + CACHE_REMAIN_KEY_PREFIX, 0, -1);
從redis中取出某一個key下面的list列表, 0表示從列表的第0個元素開始取,-1表示直取到倒數第一個元素,也就是整個列表的所有元素都取出來。

(3) Hash型別

  • 批量插入
Map<Long, UserRelationInfo> value = new HashMap<>();
userHashRedisTemplate.opsForHash().putAll(KEY, value );
向redis中某個key下面插入key,hash的Map。
  • 單個刪除
userHashRedisTemplate.opsForHash().delete(key, sourceOrgId);
從redis中某個key下面刪除掉某個hashkey所在的value。
  • 單個獲取
userHashRedisTemplate.opsForHash().get(Key, hashKey);
從redis中某個key下面得到這個key對應的hashkey的value值。前一個key只能是String型別,hashKey可以宣告為自己需要的型別。
  • 批量獲取
Map<Object, Object> userOrgMap = userHashRedisTemplate.opsForHash().entries(getUserNodeCacheKey(syncUserNode.getSourceId()));
從redis中得到某個key下面的所有的hashkey和hashvalue值。

(4) Set型別

  • 單個插入
userRoleSetRedisTemplate.opsForSet().add(KEY, cloudtOrgRoleInfo);
向redis的某個key下面的set列表裡面插入一個元素,回去重,且無序。
  • 批量取出
cloudtOrgRoleSet = userRoleSetRedisTemplate.opsForSet().members(KEY);
從redis的某個key下面得到set集合的所有元素,返回的也是一個Set集合。
  • 單個刪除
userRoleSetRedisTemplate.opsForSet().remove( KEY, subDeleteOrgRoleUserArray[i]);
從redis的某個key下面的set集合中刪除掉一個元素。

5、具體的redis命令列操作可以參考: