今天用redis存储,发现客户端jedis提供的存储方法中存储的类型只有String和byte数据,没有能够存储对象的,网上发现可以序列化存储对象。这就开始了我第一次序列化之旅。

 
 
1 测试类
 
import redis.clients.RedisClinet;
import redis.clients.SerializeUtil;
import redis.clients.jedis.Jedis;
 
public class Test {
 
      /**
      * Administrator
      * @param args
      */
      public static void main(String[] args) {
           
            // 操作单独的文本串
           Jedis redis= new Jedis( "10.2.31.38", 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(19l);
           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=RedisClinet. getInstance().set(g, key);
           System. out.println(temp);
           
           Object o=RedisClinet. getInstance().get(key);
            if(o!= null)
           {
                Goods g1=(Goods)o;
                System. out.println(g1.getName());
                System. out.println(g1.getNum());
           }
          System. out.println(RedisClinet. getInstance().del(key));
           
     }
}
 
 
2 RedisClinet 客户端类
package redis.clients;
import redis.clients.jedis.Jedis;
/**
 *
 * @author ajun
 *
 */
public class RedisClinet {
      private static final String ip= "10.2.31.38";
      private static final int port=6379;
      protected static RedisClinet redis = new RedisClinet ();
      protected static Jedis jedis = new Jedis( ipport);;
      static {
           
     }
    protected RedisClinet(){
       System. out.println( " init Redis ");
    }
    public static RedisClinet 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;
     }
 
}
 
 
3 序列化工具类
 
/**
 *
 */
package redis.clients;
 
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;
     }
}

最新文章

  1. 0.Win8.1,Win10,Windows Server 2012 安装 Net Framework 3.5
  2. acm入门 杭电1001题 有关溢出的考虑
  3. 在VBA中使用Windows API
  4. 通过 Storyboard 快速搭建一系列连贯性的视图控制器
  5. 企业云部署要如何选择IaaS PaaS和SaaS
  6. Particles.js基于Canvas画布创建粒子原子颗粒效果
  7. Java多线程(一) 多线程的基本使用
  8. MYSQL SHOW VARIABLES简介
  9. ccui.ScrollView 扩展
  10. 生成shadow中hash字串
  11. linux查看接口连接状态
  12. 如何使用第三方webservice
  13. 【bzoj3772】精神污染
  14. docker容器时间与宿主机时间不一致问题
  15. Spring Boot默认Initializer(1)——ConfigurationWarningsApplicationContextInitializer
  16. python系统性能模块笔记
  17. Atiitt 使用java语言编写sql函数或存储过程
  18. bean的实例化有几种实现方式
  19. selenimu学习二
  20. 《opencv学习》 之 几何变换

热门文章

  1. #啃underscore源码 一、root对象初始化部分
  2. caioj1230: [图论补充]哈密顿路径
  3. [QT开发小结]LNK1104: cannot open file ‘gdi32.lib’ 解决方法
  4. yii2.0 ActiveRecord 查询汇总
  5. appium学习【四】:第一个appium脚本
  6. 08_传智播客iOS视频教程_Foundation框架
  7. bzoj 1597: [Usaco2008 Mar]土地购买【斜率优化】
  8. bzoj 3675: [Apio2014]序列分割【斜率优化dp】
  9. P5071 [Ynoi2015]此时此刻的光辉
  10. CocoaPods 升级出现问题 (一)