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之类的,如果这些命令还不熟悉,就翻翻小编前几篇博客吧。不过性能这块还没怎么考虑过,期待下回分享吧……


原文地址:https://www.cnblogs.com/saixing/p/6730227.html