RedisTemplate操作HashMap

1,048 阅读1分钟

序列化

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
@Slf4j
@Configuration
@EnableConfigurationProperties({RedisProperties.class})
public class RedisAutoConfiguration {

    /**
     * 指定key序列化使用string字符串
     * @return org.springframework.data.redis.serializer.RedisSerializer<java.lang.String>
     */
    @Bean
    public RedisSerializer<String> redisKeySerializer() {
        return RedisSerializer.string();
    }

    /**
     * 指定value的序列化使用json
     * @return org.springframework.data.redis.serializer.RedisSerializer<java.lang.Object>
     */
    @Bean
    public RedisSerializer<Object> redisValueSerializer() {
        return RedisSerializer.json();
    }

    /**
     * RedisTemplate配置
     *
     * @param factory
     * @param redisKeySerializer
     * @param redisValueSerializer
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory, RedisSerializer<String> redisKeySerializer, RedisSerializer<Object> redisValueSerializer) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(factory);
        redisTemplate.setDefaultSerializer(redisValueSerializer);
        redisTemplate.setKeySerializer(redisKeySerializer);
        redisTemplate.setHashKeySerializer(redisKeySerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

注入RedisTemplate

@Resource
private RedisTemplate redisTemplate;

将map整个存入redis

Map<String,Boolean> map = new HashMap<>(2);
map.put("1",true);
map.put("2",false);
redisTemplate.opsForHash().putAll(“redis键”,map);

保存map值到指定key true为map的值

redisTemplate.opsForHash().put("redis键","map键",true);

获取整个map

redisTemplate.opsForHash().entries("redis键");

根据map键获取map值

redisTemplate.opsForHash().get("redis键","map键");

根据redis键和map键删除对应值 map键传数组可删除多个

redisTemplate.opsForHash().delete(“redis键”, "map键");

获取是否存在redis键

Boolean flag = redisTemplate.hasKey(“redis键”);

根据redis键删除

Boolean flag = redisTemplate.delete(“redis键”);