zoukankan      html  css  js  c++  java
  • 非关系型数据库之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"));//返回集合的元素个数

    博客园:http://www.cnblogs.com/zhuziyu/
    Copyright ©2018 不是植物
    【转载文章务必保留出处和署名,谢谢!】
  • 相关阅读:
    Linux统计文件夹下所有文件的数量
    Linux查看文件最后几行的命令
    linux export将PATH环境变量误删了的解决办法
    laravel提示Mcrypt PHP extension required
    php(cli模式)执行文件传递参数
    shell判断文件是否存在,不存在则创建
    php获取Linux网卡信息
    使用iptraf,ifstat查看网络流量
    作用域
    头文件,库文件,重复包含
  • 原文地址:https://www.cnblogs.com/zhuziyu/p/8718945.html
Copyright © 2011-2022 走看看