使用Java操作Redis需要jedis-2.1.0.jar,下载地址:https://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip
如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:https://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip
1packagecom.test; 2 3importjava.util.HashMap; 4importjava.util.Iterator; 5importjava.util.List; 6importjava.util.Map; 7 8importorg.junit.Before; 9importorg.junit.Test; 10 11importredis.clients.jedis.Jedis; 12 13publicclassTestRedis{ 14privateJedisjedis; 15 16@Before 17publicvoidsetup(){ 18//连接redis服务器,192.168.0.100:6379 19jedis=newJedis("192.168.0.100",6379); 20//权限认证 21jedis.auth("admin"); 22} 23 24/** 25*redis存储字符串 26*/ 27@Test 28publicvoidtestString(){ 29//-----添加数据---------- 30jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin 31System.out.println(jedis.get("name"));//执行结果:xinxin 32 33jedis.append("name","ismylover");//拼接 34System.out.println(jedis.get("name")); 35 36jedis.del("name");//删除某个键 37System.out.println(jedis.get("name")); 38//设置多个键值对 39jedis.mset("name","liuling","age","23","qq","476777XXX"); 40jedis.incr("age");//进行加1操作 41System.out.println(jedis.get("name")+"-"+jedis.get("age")+"-"+jedis.get("qq")); 42 43} 44 45/** 46*redis操作Map 47*/ 48@Test 49publicvoidtestMap(){ 50//-----添加数据---------- 51Map<String,String>map=newHashMap<String,String>(); 52map.put("name","xinxin"); 53map.put("age","22"); 54map.put("qq","123456"); 55jedis.hmset("user",map); 56//取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List 57//第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数 58List<String>rsmap=jedis.hmget("user","name","age","qq"); 59System.out.println(rsmap); 60 61//删除map中的某个键值 62jedis.hdel("user","age"); 63System.out.println(jedis.hmget("user","age"));//因为删除了,所以返回的是null 64System.out.println(jedis.hlen("user"));//返回key为user的键中存放的值的个数2 65System.out.println(jedis.exists("user"));//是否存在key为user的记录返回true 66System.out.println(jedis.hkeys("user"));//返回map对象中的所有key 67System.out.println(jedis.hvals("user"));//返回map对象中的所有value 68 69Iterator<String>iter=jedis.hkeys("user").iterator(); 70while(iter.hasNext()){ 71Stringkey=iter.next(); 72System.out.println(key+":"+jedis.hmget("user",key)); 73} 74} 75 76/** 77*jedis操作List 78*/ 79@Test 80publicvoidtestList(){ 81//开始前,先移除所有的内容 82jedis.del("javaframework"); 83System.out.println(jedis.lrange("javaframework",0,-1)); 84//先向keyjavaframework中存放三条数据 85jedis.lpush("javaframework","spring"); 86jedis.lpush("javaframework","struts"); 87jedis.lpush("javaframework","hibernate"); 88//再取出所有数据jedis.lrange是按范围取出, 89//第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度-1表示取得所有 90System.out.println(jedis.lrange("javaframework",0,-1)); 91 92jedis.del("javaframework"); 93jedis.rpush("javaframework","spring"); 94jedis.rpush("javaframework","struts"); 95jedis.rpush("javaframework","hibernate"); 96System.out.println(jedis.lrange("javaframework",0,-1)); 97} 98 99/** 100*jedis操作Set 101*/ 102@Test 103publicvoidtestSet(){ 104//添加 105jedis.sadd("user","liuling"); 106jedis.sadd("user","xinxin"); 107jedis.sadd("user","ling"); 108jedis.sadd("user","zhangxinxin"); 109jedis.sadd("user","who"); 110//移除noname 111jedis.srem("user","who"); 112System.out.println(jedis.smembers("user"));//获取所有加入的value 113System.out.println(jedis.sismember("user","who"));//判断who是否是user集合的元素 114System.out.println(jedis.srandmember("user")); 115System.out.println(jedis.scard("user"));//返回集合的元素个数 116} 117 118@Test 119publicvoidtest()throwsInterruptedException{ 120//jedis排序 121//注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的) 122jedis.del("a");//先清除数据,再加入数据进行测试 123jedis.rpush("a","1"); 124jedis.lpush("a","6"); 125jedis.lpush("a","3"); 126jedis.lpush("a","9"); 127System.out.println(jedis.lrange("a",0,-1));//[9,3,6,1] 128System.out.println(jedis.sort("a"));//[1,3,6,9]//输入排序后结果 129System.out.println(jedis.lrange("a",0,-1)); 130} 131 132@Test 133publicvoidtestRedisPool(){ 134RedisUtil.getJedis().set("newname","中文测试"); 135System.out.println(RedisUtil.getJedis().get("newname")); 136} 137}Redis连接池:
1packagecom.test; 2 3importredis.clients.jedis.Jedis; 4importredis.clients.jedis.JedisPool; 5importredis.clients.jedis.JedisPoolConfig; 6 7publicfinalclassRedisUtil{ 8 9//Redis服务器IP 10privatestaticStringADDR="192.168.0.100"; 11 12//Redis的端口号 13privatestaticintPORT=6379; 14 15//访问密码 16privatestaticStringAUTH="admin"; 17 18//可用连接实例的最大数目,默认值为8; 19//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。 20privatestaticintMAX_ACTIVE=1024; 21 22//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。 23privatestaticintMAX_IDLE=200; 24 25//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException; 26privatestaticintMAX_WAIT=10000; 27 28privatestaticintTIMEOUT=10000; 29 30//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; 31privatestaticbooleanTEST_ON_BORROW=true; 32 33privatestaticJedisPooljedisPool=null; 34 35/** 36*初始化Redis连接池 37*/ 38static{ 39try{ 40JedisPoolConfigconfig=newJedisPoolConfig(); 41config.setMaxActive(MAX_ACTIVE); 42config.setMaxIdle(MAX_IDLE); 43config.setMaxWait(MAX_WAIT); 44config.setTestOnBorrow(TEST_ON_BORROW); 45jedisPool=newJedisPool(config,ADDR,PORT,TIMEOUT,AUTH); 46}catch(Exceptione){ 47e.printStackTrace(); 48} 49} 50 51/** 52*获取Jedis实例 53*@return 54*/ 55publicsynchronizedstaticJedisgetJedis(){ 56try{ 57if(jedisPool!=null){ 58Jedisresource=jedisPool.getResource(); 59returnresource; 60}else{ 61returnnull; 62} 63}catch(Exceptione){ 64e.printStackTrace(); 65returnnull; 66} 67} 68 69/** 70*释放jedis资源 71*@paramjedis 72*/ 73publicstaticvoidreturnResource(finalJedisjedis){ 74if(jedis!=null){ 75jedisPool.returnResource(jedis); 76} 77} 78}本文内容总结:
原文链接:https://www.cnblogs.com/liuling/p/2014-4-19-04.html