RedisTemplate快取用法小記
阿新 • • 發佈:2019-01-30
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集合中刪除掉一個元素。