Redis數據結構爲字典Hash 的 存儲、獲取、刪除等的操作

一.項目用redis-learn,文章參考

Hash底層存儲數據的方式確實跟其他數據結構有點不同,其他數據結構幾乎都是:Key-Value的存儲,而Hash則是:Key – [Field-Value] 的存儲,也就是說其他數據結構的Value一般是確切的值,而Hash的Value是一系列的鍵值對。

通常我們是這樣稱呼Hash的存儲的:大Key爲實際的Key,小Key爲Field,而具體的取值爲Field對應的值value
實踐:系統數據字典實時觸發緩存存儲

本文我們實際操作下字典Hash 的存儲、獲取、刪除等的操作

二. 字典Hash 的存儲、獲取、刪除等的操作

常用的方法:

  1. put(H key, HK hashKey, HV value); 新增hashMap值。
  2. putAll(H key, Map<? extends HK,? extends HV> m);以map集合的形式添加鍵值對。
  3. entries(H key); 獲取key的列表元素。
  4. get(H key, Object hashKey); 獲取變key中的指定field鍵是否有值,如果存在返回value,沒有則返回null。
  5. keys(H key); 獲取key中的所有field列表。
  6. hasKey(H key, Object hashKey);判斷key是否有指定的field。
  7. delete(H key, Object… hashKeys); 刪除key中的field-value對,可以傳入多個參數,刪除多個field-value對。
  8. size(H key);獲取key的長度。

新建 RedisHashController類 ,代碼如下:

package com.example.redislearn.controller;


import com.google.common.collect.Maps;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;

/**
 * 數據類型Hash字典
 * Hash底層存儲數據的方式確實跟其他數據結構有點不同,其他數據結構幾乎都是:Key-Value的存儲,
 * 而Hash則是:Key – [Field-Value] 的存儲,也就是說其他數據結構的Value一般是確切的值,而Hash的Value是一系列的鍵值對,
 * 通常我們是這樣稱呼Hash的存儲的:大Key爲實際的Key,小Key爲Field,而具體的取值爲Field對應的值value。
 */

@RestController
@RequestMapping("RedisHashController")
public class RedisHashController {

    private static final Logger log = LoggerFactory.getLogger(RedisHashController.class);

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;


    @RequestMapping(value = "/hashSet", method = RequestMethod.POST)
    public void hashSet() {
        log.info("----開始哈希Hash測試");
        final String key = "SpringBootRedis:Hash:Key:英雄聯盟";
        redisTemplate.delete(key);

        HashOperations<String, String, String> hashOperations = redisTemplate.opsForHash();
        hashOperations.put(key, "德瑪西亞", "蓋倫");
        hashOperations.put(key, "諾克薩斯", "德萊厄斯");

        Map<String, String> dataMap = Maps.newHashMap();
        dataMap.put("祖安", "蒙多");
        dataMap.put("艾歐尼亞", "艾瑞莉婭");
        hashOperations.putAll(key, dataMap);

        log.info("---哈希hash-獲取列表元素: {} ", hashOperations.entries(key));
        log.info("---哈希hash-獲取諾克薩斯的元素: {} ", hashOperations.get(key, "諾克薩斯"));
        log.info("---哈希hash-獲取所有元素的field列表: {} ", hashOperations.keys(key));

        log.info("---哈希hash-祖安成員是否存在: {} ", hashOperations.hasKey(key, "祖安"));
        log.info("---哈希hash-艾歐尼亞成員是否存在: {} ", hashOperations.hasKey(key, "艾歐尼亞"));

        hashOperations.putIfAbsent(key, "暗影", "卡爾薩斯");
        log.info("---哈希hash-獲取列表元素: {} ", hashOperations.entries(key));

        log.info("---哈希hash-刪除元素德瑪西亞、 諾克薩斯: {} ", hashOperations.delete(key, "德瑪西亞", "諾克薩斯"));
        log.info("---哈希hash-獲取列表元素: {} ", hashOperations.entries(key));

        log.info("---哈希hash-獲取列表元素個數: {} ", hashOperations.size(key));
    }


}

三.測試

啓動項目,在瀏覽器或postman 上輸入:http://127.0.0.1:8782/RedisHashController/hashSet post請求
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章