package com.moral.common.util; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Repository; import javax.annotation.Resource; import java.util.*; @Repository public class RedisHashUtil { @Resource private RedisTemplate redisTemplate; /** * 存储单个值至map中 * @param redisKey redisKey中的key * @param mapKey map所对应的key * @param value map所对应的值 */ public void addMapOne(String redisKey,String mapKey,Object value) { redisTemplate.opsForHash().put(redisKey, mapKey,value); } /** * 存储整个map至redis * @param key redis中存储的key * @param map 需缓存的Map */ public void addMapAll(String key, Map map) { redisTemplate.opsForHash().putAll(key, map); } /** * 获取整个HashMap * @param redisKey redis中存储的key * @return 整个Map */ public Map getMapAll(String redisKey) { Map entries = redisTemplate.opsForHash().entries(redisKey); Map retEntries = new HashMap<>(); for(Map.Entry temp:entries.entrySet()){ Object key = temp.getKey(); Object value = temp.getValue(); retEntries.put(String.valueOf(key) , value); } return retEntries; } /** * 获取redis中hash的所有value * @param redisKey * @return */ public List getMapValues(String redisKey) { return redisTemplate.opsForHash().values(redisKey); } /** * 删除Map中的某个键值对 * @param redisKey * @param mapKey * @return 返回影响数量 */ public Long deleteMapVal(String redisKey , Object ... mapKey) { return redisTemplate.opsForHash().delete(redisKey , mapKey); } /** * 确定hashkey是否存在 * @param redisKey redis存储的key * @param mapKey 需要确定的map对象key * @return */ public boolean hasKey(String redisKey , String mapKey) { return redisTemplate.opsForHash().hasKey(redisKey , mapKey); } /** * 获取Map中具体的值 * @param redisKey redis存储的key * @param mapKey 获取的map对象key * @return */ public Object getMapVal(String redisKey, String mapKey) { return redisTemplate.opsForHash().get(redisKey,mapKey); } /** * 从哈希中获取给定key的值 * @param redisKey redis存储的key * @param mapKeys 需要去出的key的集合 * @return 值列表 */ public List multiGetHash(String redisKey , List mapKeys) { return redisTemplate.opsForHash().multiGet(redisKey , mapKeys); } /** * 获取所有map中的key * @param redisKey * @return */ public Set getHashKeys(String redisKey) { Set keys = redisTemplate.opsForHash().keys(redisKey); Set retKeys = new HashSet<>(); for (Object key : keys) { retKeys.add(String.valueOf(key)); } return retKeys; } /** * 获取所有map中的key的数量 * @param redisKey redis中的key * @return key的数量 */ public int getHashSize(String redisKey) { Set keys = redisTemplate.opsForHash().keys(redisKey); if(keys == null){ return 0; } return keys.size(); } }