Redis java操作

来源:互联网 发布:如何导出股票数据 编辑:程序博客网 时间:2024/06/06 02:08

在使用java API 操作redis需要导入两个jar包:jedis-2.X.jar、commons-pool2-2.X.jar

  1.获取Jedis对象,并建立连接

         Jedis jedis=new Jedis("localhost");//默认端口6379

          如果redis.conf设置密码验证则需要:jedis.auth(password);

          jedis.connect();

  2. DML操作

          jedis.set();

          jedis.get(); 

  3.资源关闭(Jedis对象连接关闭)

         jedis.close();

         redis中数据类型操作包括:string、list、hash、set(无须) 、sorted set(有序)

1.String操作

         jedis.set("name", "zhangsan"); 
         String name =jedis.get("name");

         jedis.del("name"); //删除指定key 的对象
         boolean b=jedis.exists("name"); //判断是否存在name这个key

2.List操作,redis中的list是一个双向的链表(从左到右)

            jedis.lpush("list", "list");
   jedis.lpush("list", "vector");  //此时链表的数据为:list  vector

            jedis.llen("list");//获取list的长度

            jedis.lpop("list") ;//获取list最左边的数据,并从list中删除

            jedis.rpop("list") ;//获取list最右边的数据,并从list中删除

            jedis.lindex("list",0);//获取list最左边的数据

            jedis.lindex("list",-1);//获取list最右边的数据

            jedis.linsert("list",LIST_POSITION.BEFORE,"vector","mysql");表示在vector的前面(左边)插入数据mysql 并                             返回list的长度,LIST_POSITION.AFTER表示右边

            jedis.lrange("list", 0, -1);//获取list中所有的数据(从左到右) 分别制定起始下标,-1表示最后一个

            jedis.lrem("list", 1, "oracle");//表示删除list中的oracle

3. hash操作

              HashMap<String,String> map=new HashMap<String,String>();
      map.put("name", "zhangsan");
      map.put("gender", "male");
      map.put("age", "20");
jedis.hmset("info", map); //插入
jedis.hgetAll("info");//得到map类型
List<String> values=jedis.hmget("info", "name"); //获取具体的map的key的值,这里可以传入多可key

                jedis.hlen("info") ;//获取info的key-value的键值对的个数

                jedis.hkeys("info");//相当于map的keySet方法,获取该map的key的集合

                jedis.hexists("info", "name");//判断是否存在该key

                jedis.hdel("info", "name");//删除该map的指定key,这里也可以传入多个key

4.set(无序)操作

          jedis.sadd("sets", "1");
          jedis.sadd("sets", "2");
          jedis.sadd("sets", "3");//添加操作

          jedis.sismember("sets", "1");//是否存在该值

         jedis.scard("sets");//该set的个数

         jedis.smembers("sets");//获取该set返回Set<String>

        jedis.srem("sets", "1");//删除指定的一个或者多个值

5.sorted Set(有序)操作,有序集合在于进行插入操作的时候,我们会给它一个得分,其内部会按照这个得分进行升序排序

        jedis.zadd("zsets", 0.1, "0.1");
        jedis.zadd("zsets", 0.2, "0.2");
        jedis.zadd("zsets", 0.3, "0.3");
        jedis.zadd("zsets", 0.4, "0.4"); //第二个参数表示得分

       jedis.zrange("zsets", 0, -1);//获取一定范围的值,-1表示所有,会按照得分升序输出

      jedis.zrevrange("zsets", 0, -1);//表示倒序输出

       jedis.zrangeByScore("zsets", 0.2, 0.4);//获取一定得分范围的值

      jedis.zrevrangeByScore("zsets", 0.3, 0.1) ;//按分数倒序输出

       jedis.zcard("zsets");//获取个数

       jedis.zcount("zsets", 0.2, 0.3);获取一定得分范围的元素的个数

       jedis.zrem("zsets", "0.1") 删除一个或多个指定的元素

        jedis.zremrangeByScore("zsets", 0.1, 0.2);删除指定分数范围内的个数



6. 连接池:预先存放一定数量的连接,以用于提高获取连接的效率

      public class JedisPoolUtil {
private static JedisPool pool=null;
static 
{
GenericObjectPoolConfig config=new GenericObjectPoolConfig();
config.setMaxTotal(8);  最大的链接数目
config.setMaxIdle(8); 最大的闲置数目
config.setMaxWaitMillis(10000); 等待获取的最大时间,
config.setTestOnBorrow(true); 获取之前进行测试
pool=new JedisPool(config, "localhost",6379,10,"helloworld"); helloworld表示密码验证

}


public static  synchronized Jedis getJedis()
{
return pool.getResource(); 获取jedis
}


public static void release(Jedis jedis)
{
pool.returnResourceObject(jedis); 回收资源
}

}


  

       

     


      



          



1 0
原创粉丝点击