zoukankan      html  css  js  c++  java
  • Java操作Redis


           前几篇博客我们介绍了Redis的概念、数据类型和不同数据类型下的数据操作。在进行数据操作的时候,我们是直接使用命令的,那如何在项目中操作Redis的数据呢?今天小编就带大家看一下在java下如何操作Redis的数据。



    准备工作:

           新建项目,需要引入jar包 jedis-2.1.0.jar    commons-pool-1.5.5.jar

           Jedis是Redis的java客户端,后面的操作都会用到。



    小试牛刀:

         查询所有key,相当于数据库命令“keys *”。

                //连接Redis,6379端口
              Jedis jedis=new Jedis("192.168.22.226",6379); 
    		//查询所有key值
    		Set keys=jedis.keys("*");
    		Iterator iterator=keys.iterator();
                  //遍历
    		while(iterator.hasNext()){
    			Object obj=iterator.next();
    			System.out.println("=======[key值]:"+obj);
    		}


    执行输出结果:




    进阶:

           Redis的数据类型分为五种:String,hashes,list,set和Sortedsets。这里只以其中的几个为例,简要说明。

    1、list  

                  //list操作--先进后出
    		jedis.lpush("list001", "001");
    		jedis.lpush("list001", "002");
    		jedis.lpush("list001", "003");
    		System.out.println("key为list001中的元素有:"+jedis.lrange("list001", 0, -1));
    		System.out.println(jedis.lpop("list001"));
    		System.out.println(jedis.lpop("list001"));
    		System.out.println(jedis.lpop("list001"));


    显示结果:




          在前一篇博客中,我们演示了list操作中模拟队列、栈的进出,这里就不再赘述了。大家可以下面自己测试,很简单的。


    2、hash

    在hash操作中,仍旧是hset命令进行添加。

                    jedis.hset("user001", "book", "Redis");
    		jedis.hset("user001", "page", "500");

    3、set

    //添加元素
    		jedis.sadd("set02", "one");
    		jedis.sadd("set02", "two");
    		jedis.sadd("set02", "three");
    		jedis.sadd("set02", "four");
    		//读取
    		Set set = jedis.smembers("set02");
    		//遍历打印输出
    		Iterator iterator = set.iterator();
    		while (iterator.hasNext()) {
    			Object obj = iterator.next();
    			System.out.println("key为set02中的元素有:"+obj);
    		}



    项目实战:

          在ITOO中,redis用来实现不同系统间的Session共享,Redis所存储的数据类型也只有String一种类型,因此项目中也只对这种类型进行了再一次的封装。


    初始化方法

    // ip地址
        private String host = "192.168.22.246";
        private int port = 6379;
    
        // 0 - never expire
        private int expire = 0;
    
     
        private int timeout = 0;
    
        private String password = "";
    
    	//Redis池
        private static JedisPool jedisPool = null;
    
        /**
         * 初始化方法
         */
        public void init()
        {
        	//配置信息
            JedisPoolConfig jedisConfig = new JedisPoolConfig();
    
            jedisConfig.setMaxIdle(100);
            jedisConfig.setMaxTotal(1000);
            jedisConfig.setMaxWaitMillis(2000);
    
            jedisConfig.setTestWhileIdle(true);
            jedisConfig.setMinEvictableIdleTimeMillis(60000);
            jedisConfig.setTimeBetweenEvictionRunsMillis(30000);
            jedisConfig.setNumTestsPerEvictionRun(-1);
    
            if (jedisPool == null)
            {
                if (password != null && !"".equals(password))
                {
    
                    jedisPool = new JedisPool(jedisConfig, host, port, timeout,
                            password);
                }
                else if (timeout != 0)
                {
                    jedisPool = new JedisPool(jedisConfig, host, port, timeout);
                }
                else
                {
                    jedisPool = new JedisPool(jedisConfig, host, port);
                }
    
            }
        }

    添加方法

    /**
         * set
         * 
         * @param key
         * @param value
         * @return
         */
        public byte[] set(byte[] key, byte[] value)
        {
            //实例化jedis
            Jedis jedis = jedisPool.getResource();
           
            try
            {
              //使用set命令添加
                jedis.set(key, value);
                if (this.expire != 0)
                {
                   //有效时间
                    jedis.expire(key, this.expire);
                }
            }
            finally
            {
                jedisPool.returnResource(jedis);
            }
            return value;
        }
    

          如果是获取元素,就使用get命令,其他的代码都很类似,就不再重复了。


          Java操作Redis还是十分好上手的,Jedis的方法和数据库的命令几乎一模一样,连名字都懒得改的,基本上都是set、get、lpush、lpop、sadd之类的,如果这些命令还不熟悉,就翻翻小编前几篇博客吧。不过性能这块还没怎么考虑过,期待下回分享吧……


  • 相关阅读:
    LINUX云计算40个相关问题
    sql
    补肾
    少吃食品
    抗癌食品
    爱情感言
    分布式事务的处理
    前端
    JAVA->Enum
    Sleuth+Zipkin+Log
  • 原文地址:https://www.cnblogs.com/saixing/p/6730227.html
Copyright © 2011-2022 走看看