jedis

java链接redis服务器

元气小坏坏 提交于 2019-11-29 23:51:19
1.首先你需要下载驱动包jedis.jar确保下载最新驱动包。 2.public class RedisUtil { //服务器IP地址 private static String ADDR = "192.168.41.65"; //端口 private static int PORT = 6379; //密码 private static String AUTH = "123456"; //连接实例的最大连接数 private static int MAX_ACTIVE = 1024; //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。 private static int MAX_IDLE = 200; //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException private static int MAX_WAIT = 10000; //连接超时的时间   private static int TIMEOUT = 10000; // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; private static boolean TEST_ON_BORROW = true;

JAVA操作Redis

家住魔仙堡 提交于 2019-11-29 23:21:26
Jedis : 一款 java 操作 redis 数据库的工具。 1.字符串类型:String格式 //1. 获取连接 Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口 //2. 操作 //存储 jedis.set("username","zhangsan"); //获取 String username = jedis.get("username"); System.out.println(username); //可以使用setex()方法存储可以指定过期时间的 key value jedis.setex("activecode",20,"hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对 //3. 关闭连接 jedis.close(); 2.哈希类型 Hash:Map格式 //1. 获取连接 Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口 //2. 操作 // 存储hash jedis.hset("user","name","lisi"); jedis.hset("user","age","23"); jedis.hset("user","gender","female"); //

Lombok的使用与原理

馋奶兔 提交于 2019-11-29 20:53:05
在面向对象编程中必不可少需要在代码中定义对象模型,而在基于Java的业务平台开发实践中尤其如此。相信大家在平时开发中也深有感触,本来是没有多少代码开发量的,但是因为定义的业务模型对象比较多,而需要重复写Getter/Setter、构造器方法、字符串输出的ToString方法和Equals/HashCode方法等。那么是否一款插件或工具能够替大家完成这些繁琐的操作呢?本文将向大家介绍一款在Eclipse/Intellij IDEA主流的开发环境中都可以使用的Java开发神器,同时简要地介绍下其背后自定义注解的原理。 Lombok的简介 Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序的性能。 在Intellij中安装Lombok的插件 想要体验一把Lombok的话,得先在自己的开发环境中安装上对应的插件。下面先为大家展示下如何在Intellij中安装上Lombok插件。

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

只愿长相守 提交于 2019-11-29 18:52:07
解决办法:调整JedisPoolConfig中maxActive为适合自己系统的阀值。 <bean id="dataJedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxActive" value="300"/> <property name="maxIdle" value="100"/> <property name="maxWait" value="10000"/> <property name="testOnBorrow" value="true"/> </bean> 参考: https://www.iteye.com/topic/1122212 注:其它原因备录: Jedis 对象用完以后,要释放掉,不让会一直占用,所以会出现无法获取新的资源。 由于防火墙原因无法连接到Redis IP地址或端口错误(端口未开放) 来源: https://www.cnblogs.com/LJing21/p/11526952.html

Jedis连接 HelloWorld实现

我怕爱的太早我们不能终老 提交于 2019-11-29 18:51:39
建一个Maven项目, pom里加下jedis依赖, 1 2 3 4 5 < dependency > < groupId >redis.clients</ groupId > < artifactId >jedis</ artifactId > < version >2.9.0</ version > </ dependency > 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.java1234.redis; import redis.clients.jedis.Jedis; /** * 测试类 * @author user * */ public class JedisTest { public static void main(String[] args) { Jedis jedis= new Jedis( "192.168.1.107" , 6379 ); // 创建客户端 设置IP和端口 jedis.set( "name" , "java知识分享网" ); // 设置值 String value=jedis.get( "name" ); // 获取值 System.out.println(value); jedis.close(); // 释放连接资源 } } 测试代码, 运行 报错了 连接超时,

基于Redis实现分布式消息队列

孤者浪人 提交于 2019-11-29 18:50:38
基于Redis实现分布式消息队列 原文地址: http://blog.csdn.net/stationxp/article/details/45731497 ) 1、为什么需要消息队列? 当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。 举个例子:业务系统触发短信发送申请,但短信发送模块速度跟不上,需要将来不及处理的消息暂存一下,缓冲压力。 再举个例子:调远程系统下订单成本较高,且因为网络等因素,不稳定,攒一批一起发送。 再举个栗子,交互模块5:00到24:00和电商系统联通,和内部ERP断开。1:00到4:00和ERP联通,和电商系统断开。 再举个例子,服务员点菜快,厨师做菜慢。 再举个例子,到银行办事的人多,提供服务的窗口少。 乖乖排队吧。 2、使用消息队列有什么好处? 2.1、提高系统响应速度 使用了消息队列,生产者一方,把消息往队列里一扔,就可以立马返回,响应用户了。无需等待处理结果。 处理结果可以让用户稍后自己来取,如医院取化验单。也可以让生产者订阅(如:留下手机号码或让生产者实现listener接口、加入监听队列),有结果了通知。获得约定将结果放在某处,无需通知。 2.2、提高系统稳定性 考虑电商系统下订单,发送数据给生产系统的情况。 电商系统和生产系统之间的网络有可能掉线,生产系统可能会因维护等原因暂停服务。

连接池你用对了吗?一次Unexpected end of stream异常的排查

一个人想着一个人 提交于 2019-11-29 18:20:28
能收获什么? 更加了解TCP协议 Redis与客户端关闭连接的机制 基于Apache Common连接池的参数调优 Linux网络抓包 情况简介 近期迁移了部分应用到K8s中,业务开发人员反馈说,会发现频繁出现 : redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream. 堆栈如下图: 发生这个问题的应用的环境如下: Java8 Jedis 2.9.0 排查 由于开发人员说近期才出现这个情况,我们首先怀疑是不是K8s环境的问题,进行了一轮K8s的网络环境问题排查。 我们首先利用tcpdump在node节点和容器内进行抓包。 tcpdump -i <interfaceName> -C 100 -s0 -n -w node.pcap tcp 不出意外我们确实发现了大量由Redis服务器响应给客户端的RST(TCP Reset)包,连接重置。 至此我们还是怀疑是网络不稳定引起的。 我们搜索了TCP RST相关内容,可以看到RST一般由下列的几个情况引起: 到不存在的端口的连接请求 异常终止一个连接 检测半打开连接 极客的Redis,不按规矩出牌的"RST"? 随后我们又对网络又进行了几轮的测试。 突然觉得有点不对劲,我们点开了RST包之前的包查看了包的内容。

Configure Jedis timeout

a 夏天 提交于 2019-11-29 18:19:21
问题 I'm having problems completing an .hgetall() , here's what I've tried: Jedis jedis = new Jedis(REDIS_MASTER_NODE); jedis.connect(); jedis.configSet("timeout", "30"); Map<String, String> alreadyStored = jedis.hgetAll(redisTargetHash); and here's what I get: Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out at redis.clients.jedis.Protocol.process(Protocol.java:79) at redis.clients.jedis.Protocol.read(Protocol.java

征服 Redis + Jedis

北战南征 提交于 2019-11-29 17:33:47
用 Memcached ,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET 等。基于这些限制,有必要考虑 Redis ! 相关链接: 征服 Redis 征服 Redis + Jedis 征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL) 征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET) 征服 Redis + Jedis + Spring (三)—— 列表操作 言归正传,目前 Redis 大概有3中基于Java语言的Client: Jredis Jedis Redis4J 这里只说 Jedis ,因为它是官方提供的唯一Redis Client For Java Provider! 一、简单使用 Jedis 需要 Jedis 就从 Maven 获取吧! Maven Pom.xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.1.0</version> <type>jar</type> <scope>compile</scope> </dependency> 如果只是简单使用Jedis,以下这么几行代码足够: Jedis

Redis(二):Jedis操作Redis

醉酒当歌 提交于 2019-11-29 17:26:30
Jedis入门 在Maven中,添加如下依赖即可使用: <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.6</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>compile</scope> </dependency> 1.简单配置-连接操作 /**简单连接Redis方式 * 1)创建连接 * 2)使用连接进行操作 * 3)关闭连接 */ @Test public void connectionTest() { //1)创建连接 Jedis connection = new Jedis("192.168.36.130", 6379); connection.auth("123456"); //2)使用连接进行操作 connection.set("name", "武大郎"); connection.set("age","26"); System.out.println(" 姓名:"+connection.get("name")+" 年龄:"