• java使用Redis2--保存对象


    Redis中并没有提供set(String key, Object obj)的方法,但提供了set(final byte[] key, final byte[] value) 的方法,可以通过把对象转化成字节数组的方式进行储存。

    对象类

    package redis;
    
    import java.io.Serializable;
    
    public class Goods implements Serializable {
        /**
         * 
         */
        private static final long serialVersionUID = 3870927632803751641L;
        private String name;
        private int num;
        private int price;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getNum() {
            return num;
        }
    
        public void setNum(int num) {
            this.num = num;
        }
    
        public int getPrice() {
            return price;
        }
    
        public void setPrice(int price) {
            this.price = price;
        }
    }

    序列化工具类

    package redis;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    
    /**
     * @author Administrator
     * 
     */
    public class SerializeUtil {
        public static byte[] serialize(Object object) {
            ObjectOutputStream oos = null;
            ByteArrayOutputStream baos = null;
            try {
                // 序列化
                baos = new ByteArrayOutputStream();
                oos = new ObjectOutputStream(baos);
                oos.writeObject(object);
                byte[] bytes = baos.toByteArray();
                return bytes;
            } catch (Exception e) {
    
            }
            return null;
        }
    
        public static Object unserialize(byte[] bytes) {
            ByteArrayInputStream bais = null;
            try {
                // 反序列化
                bais = new ByteArrayInputStream(bytes);
                ObjectInputStream ois = new ObjectInputStream(bais);
                return ois.readObject();
            } catch (Exception e) {
    
            }
            return null;
        }
    }

    redis保存对象扩展类

    package redis;
    import redis.clients.jedis.Jedis;
    
    /**
     * 
     * @author ajun
     * 
     */
    public class RedisClient {
        private static final String ip = "192.168.77.135";
        private static final int port = 6379;
        protected static RedisClient redis = new RedisClient();
        protected static Jedis jedis = new Jedis(ip, port);;
        static {
    
        }
    
        protected RedisClient() {
            System.out.println(" init Redis ");
        }
    
        public static RedisClient getInstance() {
            return redis;
        }
    
        /** set Object */
        public String set(Object object, String key) {
            return jedis.set(key.getBytes(), SerializeUtil.serialize(object));
        }
    
        /** get Object */
        public Object get(String key) {
            byte[] value = jedis.get(key.getBytes());
            return SerializeUtil.unserialize(value);
        }
    
        /** delete a key **/
        public boolean del(String key) {
            return jedis.del(key.getBytes()) > 0;
        }
    
    }

    测试类

    package redis;
    
    import redis.clients.jedis.Jedis;
    
    public class SaveObjectTest {
        /**
         * Administrator
         * 
         * @param args
         */
        public static void main(String[] args) {
            // 操作单独的文本串
            Jedis redis = new Jedis("192.168.77.135", 6379);
            redis.set("key", "value");
            System.out.println(redis.get("key"));
            System.out.println(redis.del("key"));
            // 操作实体类对象
            Goods good = new Goods(); // 这个Goods实体我就不写了啊
            good.setName("洗衣机");
            good.setNum(400);
            good.setPrice(19);
            redis.set("good".getBytes(), SerializeUtil.serialize(good));
            byte[] value = redis.get("good".getBytes());
            Object object = SerializeUtil.unserialize(value);
            if (object != null) {
                Goods goods = (Goods) object;
                System.out.println(goods.getName());
                System.out.println(goods.getNum());
                System.out.println(goods.getPrice());
            }
            System.out.println(redis.del("good".getBytes()));
            // 操作实体类对象2(实际上和上面是一样的)
            String key = "goods-key";
            Goods g = new Goods();
            g.setName("电风扇--d");
            g.setNum(200);
            String temp = RedisClient.getInstance().set(g, key);
            System.out.println(temp);
            Object o = RedisClient.getInstance().get(key);
            if (o != null) {
                Goods g1 = (Goods) o;
                System.out.println(g1.getName());
                System.out.println(g1.getNum());
            }
            System.out.println(RedisClient.getInstance().del(key));
        }
    }
  • 相关阅读:
    dapper 可空bool转换出错及解决方案
    python监控linux内存并写入mongodb
    MongoDB 线上环境按照及配置(授权方式启动)
    工作吐槽
    visual studio 调试grunt
    require js 将config和入口函数分开写
    【转】Contrary to the answers here, you DON'T need to worry about encoding!
    [ 转]国内有时抽风,无法更新adt的解决方案
    The ToolStripMenuItem visible value always false
    ArcGis : unable to save as template this document is already based on another template
  • 原文地址:https://www.cnblogs.com/yangmengdx3/p/4708249.html
Copyright © 2020-2023  润新知