非关系型数据库之Redis

1、Java中使用Jedis操作Redis
    使用Java操作Redis需要jedis-2.1.0.jar
    如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar
2、JAVA使用Redis做消息队列
    Redis消息队列的生产者和消费者:
        Message 需要传送的实体类(需实现Serializable接口)
        Configuration Redis的配置读取类,继承自Properties
        ObjectUtil 将对象和byte数组双向转换的工具类
        Jedis 通过消息队列的先进先出(FIFO)的特点结合Redis的list中的push和pop操作进行封装的工具类
    (一)序列化
        //对象转Byte[](ByteArrayOutputStream的toByteArray方法)
        public static byte[] object2Bytes(Object obj) throws IOException{
             ByteArrayOutputStream bo=new ByteArrayOutputStream();
             ObjectOutputStream oo=new ObjectOutputStream(bo);
             oo.writeObject(obj);
             byte[] bytes=bo.toByteArray();
             bo.close();
             oo.close();
             return bytes;
        }
        //Byte[]转对象(ByteArrayInputStream的readObject)
        public static Object bytes2Object(byte[] bytes) throws Exception{
           ByteArrayInputStream in=new ByteArrayInputStream(bytes);
           ObjectInputStream sIn=new ObjectInputStream(in);
           return sIn.readObject();
       }
    (二)消息类(实现Serializable接口)
    (三)Redis的操作
    利用redis做队列,我们采用的是redis中list的push和pop操作(队列:先进先出)
        //获取数据
        String value=null;
        Jedis jedis=null;
        try{
            jedis=jedisPool.getResource();
            value=jedis.get(key);
        }catch{}
三、Jedis操作各个类型
1、redis存储字符串
    jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin  
    System.out.println(jedis.get("name"));//执行结果:xinxin  
    jedis.append("name", " is my lover"); //拼接
    System.out.println(jedis.get("name"));
    jedis.del("name");  //删除某个键
    System.out.println(jedis.get("name"));
    //设置多个键值对
    jedis.mset("name","liuling","age","23","qq","476777XXX");
    jedis.incr("age"); //进行加1操作
    System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
2、redis操作Map
    Map<String, String> map = new HashMap<String, String>();
    map.put("name", "xinxin");
    map.put("qq", "123456");
    jedis.hmset("user",map);
    //删除map中的某个键值  
    jedis.hdel("user","age");
3、jedis操作List
    //开始前,先移除所有的内容
    jedis.del("java framework");
    jedis.lpush("java framework","spring");
    jedis.lpush("java framework","struts");  
    jedis.lpush("java framework","hibernate");
    //再取出所有数据jedis.lrange是按范围取出,
    // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有  
    System.out.println(jedis.lrange("java framework",0,-1));  
    jedis.rpush("java framework","spring");  
4、jedis操作Set
    //添加
    jedis.sadd("user","liuling");  
    jedis.sadd("user","who");
    //移除noname
    jedis.srem("user","who");  
    System.out.println(jedis.smembers("user"));//获取所有加入的value
    System.out.println(jedis.sismember("user", "who"));//判断 who 是否是user集合的元素
    System.out.println(jedis.scard("user"));//返回集合的元素个数

posted @ 2018-04-04 19:22  不是植物  阅读(160)  评论(0编辑  收藏  举报