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; @RunWithSpringRunner.class) @SpringBootTest @Slf4j class RedisApplicationTests { @Autowired RedisTemplate redisTemplate; @Test void testHash){ //设置生成key value的序列化策略 RedisSerializer<String> stringSerializer = new StringRedisSerializer); redisTemplate.setKeySerializerstringSerializer); redisTemplate.setValueSerializerstringSerializer); redisTemplate.setHashKeySerializerstringSerializer); redisTemplate.setHashValueSerializerstringSerializer); String key = "hash"; Map<String,String> map = new HashMap<>); map.put"f1","val1"); map.put"f2","val2"); //为hash结构设置多个键值对hmset) redisTemplate.opsForHash).putAllkey,map); //获取hash结构指定字段的value,单个keyhget) Object f1 = redisTemplate.opsForHash).getkey, "f1"); log.info"f1========"+f1); //为hash结构设置单个键值对hset) redisTemplate.opsForHash).putkey,"f3","val3"); Object f3 = redisTemplate.opsForHash).getkey, "f3"); log.info"f3========"+f3); //判断hash结构中是否包含某字段hexists) Boolean haskey = redisTemplate.opsForHash).hasKeykey, "f3"); log.info"haskey========"+haskey); //获取hash结构中所有的键值对hgetall) Map<String,String> entries = redisTemplate.opsForHash).entrieskey); forMap.Entry<String,String> entry : entries.entrySet)){ log.infoentry.getKey)+"======"+entry.getValue)); } //获取所有hash结构中所有的keyhkeys) Set<String> keys = redisTemplate.opsForHash).keyskey); forString key1 : keys){ log.info"key1=========="+keys); } //获取hash结构中所有的valuehvals) List<String> values = redisTemplate.opsForHash).valueskey); forString value : values){ log.info"value======="+value); } //获取hash结构中指定key的value,可以是多个key(hmget) List<String> list = redisTemplate.opsForHash).multiGetkey, keys); forString value2 : list){ log.info"value2======="+value2); } //hash结构中若存在相应key才进行操作hsetnx) Boolean success = redisTemplate.opsForHash).putIfAbsentkey, "f3", "6"); log.info"succes======"+success); //删除hash结构中指定的keyhdel) Long delete = redisTemplate.opsForHash).deletekey, "f1", "f2"); log.info"delete=========="+delete); } }
运行结果