Redis能缓存的5种数据类型(存取)

1.String类型

 @Autowired
 private RedisTemplate<String, String> redisTemplate;
 
    /**
     * 设置缓存
     * @param key     键
     * @param value   值
     * @param timeout  时长
     * @param timeUnit 缓存时间的类型(时/分/秒)
     */
    public void set(String key, Object value, Long timeout, TimeUnit timeUnit) {
        // 写入String缓存
        redisTemplate.opsForValue().set(key, String.valueOf(value));
        // 设置缓存时效
		if (timeout != null) {
		    if (timeUnit != null) {
		        redisTemplate.expire(key, timeout, timeUnit);
		     } else {
		        redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
		    }
		 }
	}

    /**
     * 通过key获取value缓存
     */
    public String get(String key) {
        return redisTemplate.opsForValue().get(key);
    }

2.List类型

@Autowired
 private RedisTemplate<String, String> redisTemplate;
 
    /**
     * 设置List缓存
     * @param key     键
     * @param value   值
     * @param timeout  时长
     * @param timeUnit 缓存时间的类型(时/分/秒)
     */
    public void setList(String key, List<String> value, Long timeout, TimeUnit timeUnit) {
        // 写入List缓存;rightPush和leftPusp的区别在于(在一个数的右边加入还是左边加入)
        redisTemplate.opsForList().rightPushAll(key, value);
        // 在某段时间后失效
        if (timeout != null) {
            if (timeUnit != null) {
                redisTemplate.expire(key, timeout, timeUnit);
            } else {
                redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
            }
        }
    }
	/**
     * 通过key获取value缓存
     */
    public List<String> getList(String key) {
        List<String> value = redisTemplate.opsForList().range(key, 0, redisTemplate.opsForList().size(key));
        return value;
    }

3.Set类型(不可重复的无序集合)

@Autowired
 private RedisTemplate<String, String> redisTemplate;
 
    /**
     * 设置List缓存
     * @param key     键
     * @param value   值
     * @param timeout  时长
     * @param timeUnit 缓存时间的类型(时/分/秒)
     */
    public void setSet(String key, String[] value, Long timeout, TimeUnit timeUnit) {
        // 写入Set缓存
        redisTemplate.opsForSet().add(key, value);
        // 在某段时间后失效
        if (timeout != null) {
            if (timeUnit != null) {
                redisTemplate.expire(key, timeout, timeUnit);
            } else {
                redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
            }
        }
    }
	/**
     * 通过key获取value缓存
     */
    public Set<String> getSet(String key) {
        Set<String> value = redisTemplate.opsForSet().members(key);
        return value;
    }

4.ZSet(不可重复的有序集合)

@Autowired
 private RedisTemplate<String, String> redisTemplate;
 
    /**
     * 设置List缓存
     * @param key     键
     * @param value   值
     * @param timeout  时长
     * @param timeUnit 缓存时间的类型(时/分/秒)
     */
	public void setZSet(String key, Set<String> valueSet, Long timeout, TimeUnit timeUnit) {
        int size = valueSet.size();
        for(String value: valueSet){
            redisTemplate.opsForZSet().add(key, value, size);
            size--;
        }
        // 在某段时间后失效
        if (timeout != null) {
            if (timeUnit != null) {
                redisTemplate.expire(key, timeout, timeUnit);
            } else {
                redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
            }
        }
    }
	/**
     * 通过key获取value缓存
     */
    public Set<String> getZSet(String key) {
        Set<String> value = null;
        if (redisTemplate.opsForZSet().size(key) != null){
            value = redisTemplate.opsForZSet().reverseRange(key, 0, redisTemplate.opsForZSet().size(key));
        }
        return value;
    }

5.Hash(键值对集合)

@Autowired
 private RedisTemplate<String, String> redisTemplate;
 
    /**
     * 设置缓存
     * @param key     键
     * @param value   值
     * @param timeout  时长
     * @param timeUnit 缓存时间的类型(时/分/秒)
     */
    public void set(String key, Map<String, String> value, Long timeout, TimeUnit timeUnit) {
        // 写入Map缓存,
        redisTemplate.opsForHash().putAll(key, value);
        // 设置缓存时效
		if (timeout != null) {
		    if (timeUnit != null) {
		        redisTemplate.expire(key, timeout, timeUnit);
		     } else {
		        redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
		    }
		 }
	}

    /**
     * 通过key获取value缓存
     */
    public Map<String, String> getMap(String key) {
        Map<Object, Object> value = redisTemplate.opsForHash().entries(key);
        Map<String, String> result = new HashMap<>();
        for (Map.Entry<Object, Object> entry : value.entrySet()) {
            result.put(entry.getKey().toString(), entry.getValue().toString());
        }
        return result;
    }

最终结果如下图:
在这里插入图片描述
如有转载请请务必保留此出处:https://blog.csdn.net/hometing218/article/details/86591796

猜你喜欢

转载自blog.csdn.net/hometing218/article/details/86591796