Redis中的hash結構如同java中的map,一個對象里有多個鍵值對,適合用來存儲對象。
SpringBoot中使用RedisTemplate執行Redis基本命令
在application.properties或application.yml文件中配置Redis
spring:
redis:
host: 127.0.0.1
port: 6379
編寫代碼
package com.heaven.redis; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.test.context.junit4.SpringRunner; import redis.clients.jedis.Jedis; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @RunWith(SpringRunner.class) @SpringBootTest @Slf4j class RedisApplicationTests { @Autowired RedisTemplate redisTemplate; @Test void testHash(){ //設置生成key value的序列化策略 RedisSerializer<String> stringSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringSerializer); redisTemplate.setValueSerializer(stringSerializer); redisTemplate.setHashKeySerializer(stringSerializer); redisTemplate.setHashValueSerializer(stringSerializer); String key = "hash"; Map<String,String> map = new HashMap<>(); map.put("f1","val1"); map.put("f2","val2"); //為hash結構設置多個鍵值對(hmset) redisTemplate.opsForHash().putAll(key,map); //獲取hash結構指定字段的value,單個key(hget) Object f1 = redisTemplate.opsForHash().get(key, "f1"); log.info("f1========"+f1); //為hash結構設置單個鍵值對(hset) redisTemplate.opsForHash().put(key,"f3","val3"); Object f3 = redisTemplate.opsForHash().get(key, "f3"); log.info("f3========"+f3); //判斷hash結構中是否包含某字段(hexists) Boolean haskey = redisTemplate.opsForHash().hasKey(key, "f3"); log.info("haskey========"+haskey); //獲取hash結構中所有的鍵值對(hgetall) Map<String,String> entries = redisTemplate.opsForHash().entries(key); for(Map.Entry<String,String> entry : entries.entrySet()){ log.info(entry.getKey()+"======"+entry.getValue()); } //獲取所有hash結構中所有的key(hkeys) Set<String> keys = redisTemplate.opsForHash().keys(key); for(String key1 : keys){ log.info("key1=========="+keys); } //獲取hash結構中所有的value(hvals) List<String> values = redisTemplate.opsForHash().values(key); for(String value : values){ log.info("value======="+value); } //獲取hash結構中指定key的value,可以是多個key(hmget) List<String> list = redisTemplate.opsForHash().multiGet(key, keys); for(String value2 : list){ log.info("value2======="+value2); } //hash結構中若存在相應key才進行操作(hsetnx) Boolean success = redisTemplate.opsForHash().putIfAbsent(key, "f3", "6"); log.info("succes======"+success); //刪除hash結構中指定的key(hdel) Long delete = redisTemplate.opsForHash().delete(key, "f1", "f2"); log.info("delete=========="+delete); } }
運行結果

