zoukankan      html  css  js  c++  java
  • Redis 根据key获取所有 HashKey

    前一段时间,做项目的时候遇到一个问题,就是如果缓存的时候使用 HashKey,那么如何能通过key获取所有的HashKey的值,通过百度发现没有直接答案,没办法就看了下redis的使用,通过查找发现有“entries”方法可以做到,接下来我们看具体代码。

    import java.util.List;
    
    /**
     * @Package com.ywtg.common.service
     * @ClassName: RedisObjectService
     * @Description: redis处理
     * @Author youli
     * @date 2020年9月7日
     */
    public interface RedisObjectService {
    
        /**
         * @Title: put
         * @Description: Hset放入
         * @Author youli
         * @date 2020年9月8日
         * @param key
         * @param hashKey
         * @param value
         * @return
         */
        boolean put(String key, String hashKey, Object value);
    
        /**
         * Hset缓存获取
         * 
         * @param key
         * @return
         */
        Object get(String key, String hashKey);
    
        /**
         * Hset缓存移除
         * 
         * @param key
         * @return
         */
        void remove(String key, String hashKey);
    
        /**
         * @Title: getHashKeyValue
         * @Description: 根据key获取 所有的 HashKeyValue
         * @Author youli
         * @date 2021年1月4日
         * @param key
         * @return
         */
        Object getHashKeyValue(String key);
    
    }
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    
    import javax.annotation.Resource;
    
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.data.redis.core.HashOperations;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.ValueOperations;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    import org.springframework.stereotype.Service;
    
    import com.ywtg.common.service.RedisObjectService;
    
    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    @Service
    public class RedisObjectServiceImpl implements RedisObjectService {
    
        @Resource
        private RedisTemplate<String, Object> redisTemplate;
    
        @Override
        public boolean put(String key, String hashKey, Object value) {
            try {
                redisTemplate.setKeySerializer(new StringRedisSerializer());
                HashOperations<String, Object, Object> ops = redisTemplate.opsForHash();
                ops.put(key, hashKey, value);
                return true;
            } catch (Exception e) {
                log.error("RedisObjectService hashPut simple  error detail:{}", e.getMessage());
                return false;
            }
        }
    
        @Override
        public Object get(String key, String hashKey) {
            log.info("获取redis-key:{},hashKey:{}", key, hashKey);
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            HashOperations<String, Object, Object> ops = redisTemplate.opsForHash();
            log.info("获取redis-key redisTemplate:{}", redisTemplate);
            return StringUtils.isBlank(key) ? null : ops.get(key, hashKey);
        }
    
        @Override
        public void remove(String key, String hashKey) {
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            HashOperations<String, Object, Object> ops = redisTemplate.opsForHash();
            ops.delete(hashKey, hashKey);
        }
            
        @Override
        public Object getHashKeyValue(String key) {
            log.info("获取HashKey key:{}", key);
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            HashOperations<String, Object, Object> ops = redisTemplate.opsForHash();
            log.info("获取HashKey redisTemplate:{}", redisTemplate);
            return ops.entries(key);
        }
    
    }
  • 相关阅读:
    十大排序算法之选择排序(2)
    十大排序算法之冒泡排序(1)
    2018年年度总结
    敏捷软件开发学习笔记(四)之结构型设计模式
    敏捷软件开发学习笔记(三)之创造型设计模式
    elasticsearch+head+kibana
    闭包函数延迟绑定问题
    初谈dango的post提交csrf设置和文件上传
    浏览器的同源策略,及如可跨域
    socket并发通信的几种方式
  • 原文地址:https://www.cnblogs.com/haoliyou/p/14234040.html
Copyright © 2011-2022 走看看