RedisTemplate操作Redis数据结构-Hash类型

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);
    }
}

运行结果

Published by

风君子

独自遨游何稽首 揭天掀地慰生平