jedis连接池的代码:

public class JedisPoolTest {//Redis服务器IPprivate static String ADDR = "127.0.0.1";//Redis的端口号private static int PORT = 6379;//可用连接实例的最大数目,默认值为8;//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。private static int MAX_ACTIVE = 1024;//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。private static int MAX_IDLE = 200;//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;private static int MAX_WAIT = 10000;//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;private static boolean TEST_ON_BORROW = true;private static JedisPool jedisPool = null;private static ThreadLocal<Jedis> jedisThreadLocal = new ThreadLocal<Jedis>();/*** 初始化Redis连接池*/static {try {JedisPoolConfig config = new JedisPoolConfig();config.setMaxActive(MAX_ACTIVE);config.setMaxIdle(MAX_IDLE);config.setMaxWait(MAX_WAIT);config.setTestOnBorrow(TEST_ON_BORROW);jedisPool = new JedisPool(config, ADDR, PORT);} catch (Exception e) {e.printStackTrace();}}/*** 获取Jedis实例* @return*/public static Jedis getJedis() {System.out.println("从连接池获取jedis连接资源");Jedis jedis = jedisThreadLocal.get();if(jedis==null){jedis = jedisPool.getResource();jedisThreadLocal.set(jedis);return jedis;}return jedis;}/*** 释放jedis资源* @param jedis*/public static void returnResource(final Jedis jedis) {System.out.println("jedis连接返回到连接池");if (jedis != null) {jedisPool.returnResource(jedis);//该方法仅仅将资源返回到连接池了,但是暂时没有断开连接jedisThreadLocal.set(null);}}}

redis简单的api调用:

public class TestRedis {private Jedis jedis;// before注解的方法,在运行test注解的方法之前会运行@Beforepublic void setup() {// 连接redis服务器jedis = new Jedis("192.168.83.60", 6379);System.out.println("Connection to server sucessfully");// 增加一个Key检测是否连接成功// jedis.set("foo", "bar");// String value = jedis.get("foo");// System.out.println("foo-->"+value);// 查看服务是否运行System.out.println("Server is running: " + jedis.ping());//输出PONG则连接成功System.out.println("--------------------------------------------");}/*** jedis存储字符串*/@Testpublic void testString() {// -----添加数据----------jedis.set("name", "xinxin");// 向key-->name中放入了value-->xinxinSystem.out.println(jedis.get("name"));// 执行结果:xinxinjedis.append("name", " is my lover"); // 拼接 。// 如果用redis命令输入key对应的值是不能有空格的哦System.out.println(jedis.get("name"));jedis.del("name"); // 删除某个键System.out.println(jedis.get("name"));// 设置多个键值对jedis.mset("name", "liuling", "age", "23", "qq", "476777XXX");jedis.incr("age"); // 进行加1操作System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-"+ jedis.get("qq"));jedis.set("china", "这是个中文值");System.out.println(jedis.get("china"));}/*** jedis操作Map* * jedis.hmset("user",map);//该方法将java中的map在redis中存成了hash类型的数据对象*/@Testpublic void testMap() {// -----添加数据----------Map<String, String> map = new HashMap<String, String>();map.put("name", "xinxin");map.put("age", "22");map.put("qq", "123456");jedis.hmset("user", map);// hmset方法存入后,该user对象在redis里面是一个hash类型的数据// 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数List<String> rsmap = jedis.hmget("user", "name", "age", "qq");System.out.println(rsmap);// 删除map中的某个键值jedis.hdel("user", "age");System.out.println(jedis.hmget("user", "age")); // 因为删除了,所以返回的是nullSystem.out.println(jedis.hlen("user")); // 返回key为user的键中存放的值的个数2System.out.println(jedis.exists("user"));// 是否存在key为user的记录 返回trueSystem.out.println(jedis.hkeys("user"));// 返回map对象中的所有keySystem.out.println(jedis.hvals("user"));// 返回map对象中的所有valueIterator<String> iter = jedis.hkeys("user").iterator();while (iter.hasNext()) {String key = iter.next();System.out.println(key + ":" + jedis.hmget("user", key));}}/*** jedis操作List* * jedis.lpush("java framework", "spring"):方法创建了名为java* framework的List集合(如果不存在),并添加了一个元素 该方法保存的对象在redis里也为List类型的集合*/@Testpublic void testList() {// 删除该list内容jedis.del("java framework");// 取出所有数据,jedis.lrange是按范围取出,// 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有System.out.println("内容:" + jedis.lrange("java framework", 0, -1));// 先向key java framework中存放三条数据,在key对应list的头部添加字符串元素jedis.lpush("java framework", "spring");jedis.lpush("java framework", "struts");jedis.lpush("java framework", "hibernate");System.out.println(jedis.lrange("java framework", 0, -1));jedis.del("java framework");// 在key对应list的尾部部添加字符串元素jedis.rpush("java framework", "spring");jedis.rpush("java framework", "struts");jedis.rpush("java framework", "hibernate");System.out.println(jedis.lrange("java framework", 0, -1));}/*** jedis操作Set* * jedis.sadd("user1", "liuling"):创建一个set集合user1(如果不存在),并添加一个元素liuling* 该方法保存的对象在redis里也为Set集合*/@Testpublic void testSet() {// 添加jedis.sadd("user1", "liuling");jedis.sadd("user1", "xinxin");jedis.sadd("user1", "ling");jedis.sadd("user1", "zhangxinxin");jedis.sadd("user1", "who");// 移除nonamejedis.srem("user1", "who");System.out.println(jedis.smembers("user1"));// 获取所有加入的valueSystem.out.println(jedis.sismember("user1", "who"));// 判断 who// 是否是user集合的元素System.out.println(jedis.srandmember("user1"));System.out.println(jedis.scard("user1"));// 返回集合的元素个数}/*** jedis对key值的操作*/@Testpublic void testKey() {Set keys = jedis.keys("*");// 列出所有的key,查找特定的key如:redis.keys("foo")Iterator t1 = keys.iterator();while (t1.hasNext()) {Object obj1 = t1.next();System.out.println(obj1);}// DEL 移除给定的一个或多个key。如果key不存在,则忽略该命令。// redis.del("name");// TTL 返回给定key的剩余生存时间(time to live)(以秒为单位)System.out.println(jedis.ttl("name"));// PERSIST key 移除给定key的生存时间。jedis.persist("name");// EXISTS 检查给定key是否存在。jedis.exists("name");// MOVE key db// 将当前数据库(默认为0)的key移动到给定的数据库db当中。如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。jedis.move("name", 1);// 将name这个key,移动到数据库1// RENAME key newkey// 将key改名为newkey。当key和newkey相同或者key不存在时,返回一个错误。当newkey已经存在时,RENAME命令将覆盖旧值。jedis.rename("name", "foonew");// TYPE key 返回key所储存的值的类型。System.out.println(jedis.type("name"));// none(key不存在),string(字符串),list(列表),set(集合),zset(有序集),hash(哈希表)// EXPIRE key seconds 为给定key设置生存时间。当key过期时,它会被自动删除。jedis.expire("name", 5);// 5秒过期}
}

转载:https://blog.csdn.net/u012385190/article/details/53464621

参考:https://blog.csdn.net/gwd1154978352/article/details/78006891

参考:https://www.cnblogs.com/tuojunjie/p/6226441.html

Redis之jedis连接池相关推荐

  1. Redis:Jedis连接池JedisPool

    目录 1.JedisPool的应用 1.1 基本应用 1.2 封装应用 1.3 增加超时重试 2.JedisPool配置 2.1 工厂配置 2.2 资源池配置 Jedis提供了连接池JedisPool ...

  2. redis客户端jedis连接和spring结合

    摘自传智博客课程 <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http ...

  3. 详解Jedis连接池报错处理

    在使用Jedis连接池模式下,比较常见的报错如下: redis.clients.jedis.exceptions.JedisConnectionException:Could not get a re ...

  4. Redis-学习笔记05【Jedis连接池】

    Java后端 学习路线 笔记汇总表[黑马程序员] Redis-学习笔记01[Redis环境搭建] Redis-学习笔记02[Redis命令操作] Redis-学习笔记03[Redis持久化] Redi ...

  5. java redis集群连接池_(08)redis之使用java客户端、spring连接redis、redis集群示例...

    一.java代码连接 1.新建工程,并引入以下包: jedis-2.7.0.jar.commons-pool2-2.3.jar.junit-4.10.jar 2.单实例连接 /*** 单实例连接*/@ ...

  6. jedis连接池的maxIdle和maxtotal参数

    1.我们一般连接redis都需要用到连接池,最常用的就是jedis连接池,连接池中有两个参数的设置对高性能有较大影响:maxIdle和maxTotal 2.maxIdle的意思是连接池中空闲连接的最大 ...

  7. springboot2整合redis使用lettuce连接池(解决lettuce连接池无效问题)

    lettuce客户端 Lettuce 和 Jedis 的都是连接Redis Server的客户端程序.Jedis在实现上是直连redis server,多线程环境下非线程安全(即多个线程对一个连接实例 ...

  8. Redis中的连接池以及在Springboot中的使用

    1.为什么要使用连接池以及常用客户端的区别     众所周知,Redis是单线程的,那为什么还要使用连接池?首先Redis也是一种基于内存数据库,有着很高的性能,但是我们的系统使用Redis服务时需要 ...

  9. Jedis——连接池

    使用: /*** jedis连接池使用*/@Testpublic void test7(){//0.创建一个配置对象JedisPoolConfig config = new JedisPoolConf ...

最新文章

  1. nfs原理及安装配置
  2. FPGA 的I/O BANK介绍
  3. C++用stack实现深度优先搜索DFS(附完整源码)
  4. 产品专家Marty Cagan:不做仅仅会编码的人
  5. php服务器端注释,php标识和注释
  6. ecs服务器配置git_ecs安装git
  7. 我写的万年历插件(含天干地支,农历,阳历,节气,各种节假日等),基于MooTools 1.4...
  8. 进销存系统软件怎么测试,进销存系统中的报表测试
  9. 如何编译生成dll文件以及如何调用dll文件
  10. 计算机电子管与晶体管区别,电子管、晶体管与集成电路 扫盲
  11. 固态硬盘是什么接口_电脑固态硬盘和机械硬盘有什么区别-电脑固态硬盘和机械硬盘区别介绍...
  12. 14 ABSOLUTE评估肿瘤纯度
  13. 店盈通:新品牌如何活得更好、活得更久
  14. 【python】迭代器与生成器到底是什么?看完你就知道
  15. 视频与编解码的技术邂逅,碰撞出的高清罗曼史
  16. 计算机黑屏时间,电脑开机黑屏时间长怎么办?Win10开机黑屏时间很久的解决方法...
  17. The application bundle does not contain a valid identifier
  18. php smtp发送邮件
  19. matlab moveverage,MATLAB在数字图像处理课程教学中的应用
  20. 辽宁省赛2010 G - NEW RDSP MODE I【思路题】(省赛选拔赛之个人赛9)

热门文章

  1. python中条件、循环等
  2. MVC 中 注册不成功 或其他操作不成功 提示办法
  3. VB模拟指针模块mPoint.bas
  4. 在Eclipse新建菜单中添加菜单项,其他地方添加菜单项类似
  5. android studio 2.0 导入工程
  6. java swing jdk_javax.swing
  7. visual studio installer可以卸载吗_技术帖 | 这些宝藏软件你安装了吗?
  8. android 抓取webview中的所有图片_Python|任意网页中的所有图片下载
  9. 多媒体计算机的关键技术有哪些,多媒体计算机的定义分类和关键技术
  10. android 数据库详解,Android-SQLite数据库操作详解