[关闭]
@coldxiangyu 2017-04-06T01:26:59.000000Z 字数 1841 阅读 821

redis深入研究【jedis】

redis


Jedis是Redis官方首选的Java客户端开发包,有了它我们就可以愉快的用java操作redis了。
接下来搭建一个测试jedis的工程,如下:
image_1bcumo8b51chl1405s9d5nl1uj89.png-16.8kB

需要引入包,jedis-2.9.0.jar以及commons-pool2-2.3.jar
首先编写Junit测试类,测试redis连通性。
代码如下:

  1. package com.lxy.test;
  2. import org.junit.Test;
  3. import redis.clients.jedis.Jedis;
  4. public class JedisTest {
  5. //书写测试类
  6. @Test
  7. public void TestJedis(){
  8. //创建jedis对象,相当于创建了一个客户端和reidis服务器的链接。需要ip和端口号,IP就是安装有redis服务的linux服务器的地址,端口号默认为6379
  9. Jedis jedis= new Jedis("127.0.0.1",6379);
  10. //ping redis服务器,这是它的一个方法,如果服务正常,会回复一个pong
  11. String pong = jedis.ping();
  12. System.out.println("如果服务器可用请返回pong,谢谢合作:"+pong);
  13. //先用第一个键去取一次值,这个时候redis中没有数据返回应该是空的。
  14. String value = jedis.get("key");
  15. System.out.println("第一次访问的时候取到的值="+value);
  16. //将数据存入reidis服务器中
  17. jedis.set("key","第一次存入的值");
  18. //将数据取出
  19. value = jedis.get("key");
  20. System.out.println("存入相应的值以后取到的值="+value);
  21. //关闭和redis的链接
  22. jedis.close();
  23. }
  24. }

结果如下:
image_1bcumu7tef9ui7lq0uir41mcsm.png-10.4kB

对应服务器响应:
image_1bcun0pbed3ck9890ajl014l913.png-8.1kB

在实际应用中,这样是远远不够的,不能每次进行redis数据操作就单独建立连接。jedis提供了连接池的API,JedisPool。
以下为jedis连接池的测试类,写的比较简单:

  1. package com.lxy.pool;
  2. import redis.clients.jedis.Jedis;
  3. import redis.clients.jedis.JedisPool;
  4. import redis.clients.jedis.JedisPoolConfig;
  5. public class RedisUtils {
  6. private RedisUtils(){
  7. }
  8. private static JedisPool jedisPool = null;
  9. //获取链接
  10. public static synchronized Jedis getJedis(){
  11. if(jedisPool==null){
  12. JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
  13. //指定连接池中最大空闲连接数
  14. jedisPoolConfig.setMaxIdle(10);
  15. //链接池中创建的最大连接数
  16. jedisPoolConfig.setMaxTotal(100);
  17. //设置创建链接的超时时间
  18. jedisPoolConfig.setMaxWaitMillis(2000);
  19. //表示连接池在创建链接的时候会先测试一下链接是否可用,这样可以保证连接池中的链接都可用的。
  20. jedisPoolConfig.setTestOnBorrow(true);
  21. jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379);
  22. }
  23. return jedisPool.getResource();
  24. }
  25. //返回链接
  26. public static void returnResource(Jedis jedis){
  27. jedisPool.close();
  28. }
  29. }

之后,我把开始的测试类改成获取连接池连接进行redis操作:

  1. @Test
  2. public void TestJedisPool(){
  3. Jedis jedis = RedisUtils.getJedis();
  4. System.out.println("测试连通性:"+jedis.ping());
  5. String value = jedis.get("key");
  6. System.out.println("key="+value);
  7. }

执行结果:
微信截图_20170406091758.png-9.4kB

关于jedis的基本操作先介绍到这里,后续在项目中的具体应用及优化再进行补充说明。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注