Jedis所需要的jar包

        <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.8.0</version></dependency

测试连通性

package com.lcy.Test;import redis.clients.jedis.Jedis;public class JedisTest {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1", 6379);//查看服务是否运行,打出pong表示OKSystem.out.println("connection is OK==========>: " + jedis.ping());}
}

连接成功

Jedis常用操作

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Response;
import redis.clients.jedis.Transaction;public class Test03
{public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1",6379);//监控key,如果该动了事务就被放弃/*3jedis.watch("serialNum");jedis.set("serialNum","s#####################");jedis.unwatch();*/Transaction transaction = jedis.multi();//被当作一个命令进行执行Response<String> response = transaction.get("serialNum");transaction.set("serialNum","s002");response = transaction.get("serialNum");transaction.lpush("list3","a");transaction.lpush("list3","b");transaction.lpush("list3","c");transaction.exec();//2 transaction.discard();System.out.println("serialNum***********"+response.get());}
}

JedisPool

获取Jedis实例需要从JedisPool中获取,用完jedis实例需要返还给JedisPool。如果jedis在使用的过程中出错,则也需要还给JedisPool

JedisPoolUtil .class


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class JedisPoolUtil {private static volatile JedisPool jedisPool = null;//被volatile修饰的变量不会被本地线程缓存,对该变量的读写都是直接操作共享内存。private JedisPoolUtil() {}public static JedisPool getJedisPoolInstance(){if(null == jedisPool){synchronized (JedisPoolUtil.class){if(null == jedisPool){JedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxActive(1000);poolConfig.setMaxIdle(32);poolConfig.setMaxWait(100*1000);poolConfig.setTestOnBorrow(true);jedisPool = new JedisPool(poolConfig,"127.0.0.1");}}}return jedisPool;}public static void release(JedisPool jedisPool,Jedis jedis){if(null != jedis){jedisPool.returnResourceObject(jedis);}}
}

Test01.class


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;public class Test01 {public static void main(String[] args) {JedisPool jedisPool = JedisPoolUtil.getJedisPoolInstance();Jedis jedis = null;try {jedis = jedisPool.getResource();jedis.set("k18","v183");} catch (Exception e) {e.printStackTrace();}finally{JedisPoolUtil.release(jedisPool, jedis);}}
}

配置总结:

JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。

maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted。
maxIdle:控制一个pool最多有多少个状态为idle(空闲)的jedis实例;
whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种。
WHEN_EXHAUSTED_FAIL --> 表示无jedis实例时,直接抛出NoSuchElementException;
WHEN_EXHAUSTED_BLOCK --> 则表示阻塞住,或者达到maxWait时抛出JedisConnectionException;
WHEN_EXHAUSTED_GROW --> 则表示新建一个jedis实例,也就说设置的maxActive无用;
maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛JedisConnectionException;
testOnBorrow:获得一个jedis实例的时候是否检查连接可用性(ping());如果为true,则得到的jedis实例均是可用的;

testOnReturn:return 一个jedis实例给pool时,是否检查连接可用性(ping());

testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;

timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数;

numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数;

minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;

softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义

lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列;

其中JedisPoolConfig对一些参数的默认设置如下:
testWhileIdle=true
minEvictableIdleTimeMills=60000
timeBetweenEvictionRunsMillis=30000
numTestsPerEvictionRun=-1

Redis的客户端Jedis相关推荐

  1. redis客户端Jedis和Luttuce的区别,并使用springboot整合

    Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server.也就是说这两种都可以是redis的客户端. Jedis Jedis在实现上是直接连 ...

  2. jedis使用_Redis --Java客户端 Jedis

    Redis --Java客户端 Jedis 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 Jedis: 一款java操作 ...

  3. Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍(转)

    [-] 一普通同步方式 二事务方式Transactions 三管道Pipelining 四管道中调用事务 五分布式直连同步调用 六分布式直连异步调用 七分布式连接池同步调用 八分布式连接池异步调用 九 ...

  4. Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍--转载

    原文地址:http://www.blogways.net/blog/2013/06/02/jedis-demo.html redis是一个著名的key-value存储系统,而作为其官方推荐的java版 ...

  5. redis java客户端配置,Java的Redis客户端选择-jedis与Lettuce

    Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线 ...

  6. Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍

    一.普通同步方式 二.事务方式(Transactions) 三.管道(Pipelining) 四.管道中调用事务 五.分布式直连同步调用 六.分布式直连异步调用 七.分布式连接池同步调用 八.分布式连 ...

  7. java redis管道_Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍

    jedis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务.管道及有jedis自身实现的分布式. 在这里对jedis关于事务.管道和分布式 ...

  8. Redis客户端 Jedis 与 Lettuce

    Lettuce 和 Jedis 的定位都是 Redis 的 client,所以它们可以直接连接redis server. Jedis 在实现上是直接连接的 redis server,如果在多线程环境下 ...

  9. 自己动手写一个能操作redis的客户端

    作者:孤独烟 来自:http://rjzheng.cnblogs.com/ 引言 redis大家在项目中经常会使用到.官网也提供了多语言的客户端供大家操作redis,如下图所示 但是,大家有思考过,这 ...

最新文章

  1. 2021年大数据Spark(三十三):SparkSQL分布式SQL引擎
  2. 2015.4.10-SQL 高级查询(二)
  3. 计算机一级考试试题 文明,XP计算机文明基础模拟试题库1.doc
  4. opencv 解析yuv_OpenCV Mat格式存储YUV图像
  5. 前端学习(1559):ng-classt隔行变色
  6. JS_11正则表达式和字符串方法
  7. linux之切换用户su(switch user)
  8. Redis 6.0 源码阅读笔记(6) -- Set 数据类型源码分析
  9. 显示已暂停_美国大学这类研究生项目真的要凉?盘点美国暂停招生的研究生项目~...
  10. 前轮转向最大角度设计原来_转向系统的工作原理
  11. 前端自动化构建工具gulp的使用介绍
  12. 计算与编程思维-Python实践【Python Crash Course】
  13. AI 编辑视频!这特效太逆天了!代码开源 SIGGRAPH Asia 2021
  14. DM642的PCI驱动编程笔记:遍历一块内存空间的源码
  15. Python学习记录(一)
  16. 将android程序写入内存,android中将数据写入手机内存和sdcard中的文件
  17. 《用户至上:用户研究方法与实践(原书第2版)》一1.1 什么是用户体验
  18. php 图片印章_给图片加字,印章在线生成
  19. 百度云直链下载-Aria2(二)
  20. Android ocr识别文字介绍(文字识别)

热门文章

  1. 一步步看α-β剪枝算法
  2. 语音识别中的WFST和语言模型
  3. WPF实战之DataGrid设置行高
  4. 商标注册证的查询方法
  5. 概括几种项目类型使用的技术路线
  6. 全球与中国汽车真皮内饰市场发展模式及前景趋势预测报告2022-2028年版
  7. 电源硬件设计----升降压变换器(负压输出)基础
  8. Midjourney|文心一格prompt教程[基础篇]:注册使用教程、风格设置、参数介绍、隐私模式等
  9. 关于近期工作的一些感想
  10. PyQt5在窗口上显示动态图表