Redis存json数据取出来之后有反斜杠

时间:2025-02-16 18:28:40

Redis取出数据之后有反斜杠

一开始的方法

    @Autowired
    private RedisTemplate<String, String> redisTemplate;
        /**
     * 写入缓存
     *
     * @param key
     * @param value
     * @return
     */
    public boolean set(final String key, String value, Long expireTime) {
        boolean result = false;
        try {
            ValueOperations<String, String> operations = redisTemplate.opsForValue();
            operations.set(key, value);
            redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    
    /**
     * 读取缓存
     *
     * @param key
     * @return
     */
    public String get(final String key) {
        String result = null;
        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        result = operations.get(key);
        return result;
    }

因为之前的方法RedisTemplate<String, String> 都是String类型的所以在取数据之后会多出来反斜杠

改为下面的方法就能解决这个问题RedisTemplate<Object, Object> 存的时候直接存为Object类型

 @Autowired
    private RedisTemplate<Object, Object> redisTemplate;

    /**
     * 写入缓存
     *
     * @param key
     * @param value
     * @return
     */
    public boolean set(final Object key, Object value, Long expireTime) {
        boolean result = false;
        try {
            ValueOperations<Object, Object> operations = redisTemplate.opsForValue();
            operations.set(key, value);
            redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 读取缓存
     *
     * @param key
     * @return
     */
    public Object get(final Object key) {
        ValueOperations<Object, Object> operations = redisTemplate.opsForValue();
        Object o = operations.get(key);
        return o;
    }