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

Bagaimana untuk melaksanakan Java redis untuk menyimpan data jenis objek Peta

PHPz
PHPzke hadapan
2023-04-25 09:19:271671semak imbas

    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;
        }
    }

    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;
        }
    }

    Kaedah 1°

    redisTemplate.opsForHash()

    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);
        }
    }

    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;
        }
    }

    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);
        }
    }

    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!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam