Rumah > Java > javaTutorial > Bagaimana untuk melaksanakan Java redis untuk menyimpan data jenis objek Peta

Bagaimana untuk melaksanakan Java redis untuk menyimpan data jenis objek Peta

PHPz
Lepaskan: 2023-04-25 09:19:27
ke hadapan
1698 orang telah melayarinya

    Penerangan latar belakang

    Projek ini perlu menyimpan maklumat latitud dan longitud terkini yang dikumpul oleh peranti ke dalam cache redis untuk memudahkan pertanyaan dan mendapatkan semula tepat pada masanya. Memandangkan peralatan yang ditanya adalah berbeza bergantung pada keadaan carian. Data disimpan dalam cache redis sebagai jenis peta dan direkodkan di sini.

    Kelas entiti

    Nota: Pastikan anda melaksanakan antara muka bersiri

    Kelas induk

    public class Redis implements Serializable{
    
        private String name;
        private Integer age;
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    Salin selepas log masuk

    Subkelas

    import java.io.Serializable;
    
    public class RedisCustom extends Redis {
    
        private String stuCode;
    
        public String getStuCode() {
            return stuCode;
        }
        public void setStuCode(String stuCode) {
            this.stuCode = stuCode;
        }
    }
    Salin selepas log masuk

    Kaedah 1°

    redisTemplate.opsForHash()
    Salin selepas log masuk

    Kod sampel

    @Controller
    @RequestMapping("/redis")
    public class RedisController {
    
        @Autowired
        private RedisTemplate redisTemplate;
    
        /**
         * @param
         * @return
         */
        @RequestMapping(value = "/setRedisData", method = RequestMethod.GET)
        @ResponseBody
        public Map<String, Object> setRedisData() {
    
            RedisCustom redis1 = new RedisCustom();
            redis1.setName("小明");
            redis1.setAge(12);
            redis1.setStuCode("36");
            RedisCustom redis2 = new RedisCustom();
            redis2.setName("小红");
            redis2.setAge(11);
            redis2.setStuCode("24");
    
            //构造存入redis中的map
            Map<String, RedisCustom> redisDataMap = new HashMap<String, RedisCustom>();
            redisDataMap.put(redis1.getName(), redis1);
            redisDataMap.put(redis2.getName(), redis2);
    
            //存入redis
            redisTemplate.opsForHash().putAll("redisTest",redisDataMap);
            //获取缓存内容
            Map<String,RedisCustom> resultMap = redisTemplate.opsForHash().entries("redisTest");
            
            //List<RedisCustom> reslutMapList = redisTemplate.opsForHash().values("redisTest");
            //Set<RedisCustom> resultMapSet = redisTemplate.opsForHash().keys("redisTest");
            //RedisCustom value = (RedisCustom)redisTemplate.opsForHash().get("redisTest","小明");
            
            return ResponseData.success(resultMap);
        }
    }
    Salin selepas log masuk

    Hasil

    Bagaimana untuk melaksanakan Java redis untuk menyimpan data jenis objek Peta

    Rujukan
    https://www.yisu .com/article/246815.htm

    Kaedah 2°

    Tukar objek kepada bait[]

    Kelas alat pensirilan dan penyahserikatan

    import java.io.*;
    
    /**
     * 序列化及反序列化工具类
     */
    public class SerializeObjectTool {
        //序列化
        public static byte[] serialize(Object obj) {
            ObjectOutputStream obi = null;
            ByteArrayOutputStream bai = null;
            try {
                bai = new ByteArrayOutputStream();
                obi = new ObjectOutputStream(bai);
                obi.writeObject(obj);
                byte[] byt = bai.toByteArray();
                return byt;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        // 反序列化
        public static Object unserizlize(byte[] byt) {
            ObjectInputStream oii = null;
            ByteArrayInputStream bis = null;
            bis = new ByteArrayInputStream(byt);
            try {
                oii = new ObjectInputStream(bis);
                Object obj = oii.readObject();
                return obj;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    Salin selepas log masuk

    Kod Contoh

    @Controller
    @RequestMapping("/redis")
    public class RedisController {
        /**
         * @param
         * @return
         */
        @RequestMapping(value = "/setRedisData", method = RequestMethod.GET)
        @ResponseBody
        public Map<String, Object> setRedisData() {
        
            RedisCustom redis1 = new RedisCustom();
            redis1.setName("小明");
            redis1.setAge(12);
            redis1.setStuCode("36");
            RedisCustom redis2 = new RedisCustom();
            redis2.setName("小红");
            redis2.setAge(11);
            redis2.setStuCode("24");
    
            //构造存入redis中的map
            Map<String, RedisCustom> redisDataMap = new HashMap<String, RedisCustom>();
            redisDataMap.put(redis1.getName(), redis1);
            redisDataMap.put(redis2.getName(), redis2);
    
            //连接redis
            Jedis redis = new Jedis("xx.xx.xxx.xx", 6379);
            redis.auth("xxxxxxxxxxx");
            
            //存
            byte[] personByte = SerializeObjectTool.serialize(redisDataMap);
            redis.set("redisData".getBytes(), personByte);
            //取
            byte[] byt = redis.get("redisData".getBytes());
            Object obj = SerializeObjectTool.unserizlize(byt);
    
            Map<String, RedisCustom> redisData = (Map<String, RedisCustom>) obj;
    
            return ResponseData.success(redisData);
        }
    }
    Salin selepas log masuk

    Atas ialah kandungan terperinci Bagaimana untuk melaksanakan Java redis untuk menyimpan data jenis objek Peta. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan