redis存儲List類型數據 Jackson轉換list為json


Redis支持的類型雖然有List,但是只支持List<String>
一般有兩種方式來存儲
1.序列化與反序列化
2.json
正常情況下序列化效率挺高的,但是遇到高並發的情況會導致消耗太高。
把數據轉換成json格式獲取的時候在轉換為對象,簡單快捷,所以這里使用第二種json格式來存儲List。

需要引入的jar包

<!-- json -->
<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.7.4</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-core</artifactId>
   <version>2.7.4</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-annotations</artifactId>
   <version>2.7.4</version>
</dependency>
<!-- Jedis是Redis官方推薦的Java連接開發工具 -->
<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>2.7.3</version>
</dependency>
<!-- 對Redis的Key-Value數據存儲操作提供了更高層次的抽象 -->
<dependency>
   <groupId>org.springframework.data</groupId>
   <artifactId>spring-data-redis</artifactId>
   <version>1.6.0.RELEASE</version>
</dependency>
package com.test;

import org.springframework.data.redis.core.RedisTemplate;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;

@Controller
@RequestMapping("/test")
public class Test{
    @Autowired
    private RedisTemplate redisTemplate;

    //json轉換
    final ObjectMapper objectMapper = new ObjectMapper();

    @RequestMapping(value="/list", method = RequestMethod.GET)
    private void list(){
        //查詢出的用戶數據
        List<User> list = null;

        //list轉為json
        String userJson = null;
        try{
            userJson = objectMapper.writeValueAsString(list);
        } catch(Exception e){
            e.printStackTrace();
        }
        //存入redis
        redisTemplate.opsForValue().set("user", userJson, 5, TimeUnit.SECONDS);

        //取出redis中的用戶列表
        Object getUser = redisTemplate.opsForValue().get("user");

        //json轉為list
        try{
            //先把redis中取出的數據轉為字符串,然后轉為list
            //使用object.toString()方法把Object轉為字符串的話要注意Object不能為null否則會報NullPointException,一般別用這種方法。
            list = objectMapper.readValue(String.valueOf(getUser), new TypeReference<List<User>>(){});
        } catch(Exception e){
            e.printStackTrace();
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM