Java操作Redis

来源:互联网 发布:安卓登录源码 编辑:程序博客网 时间:2024/06/11 22:22


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


1 0
原创粉丝点击