热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redis线程问题相关配置

今天遇到一个问题老提示redis线程未打开,搜了一下整理了一把redis配置如下:publicclassRedisClient{Redis服务器IPpr

今天遇到一个问题  老提示redis线程未打开,

 

搜了一下  整理了一把redis配置如下:

 

public class RedisClient {
//Redis服务器IP
private static String ADDR = "127.0.0.1";

//Redis的端口号
private static int PORT = 6379;

//访问密码
private static String AUTH = "123456";

//可用连接实例的最大数目,默认值为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;

private static int TIMEOUT = 10000;

//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
private static boolean TEST_ON_BORROW = true;

private static JedisPool pool;

private List resultList;
/**
* 初始化Redis连接池
*/
private static void initializePool() {
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(MAX_ACTIVE);
config.setMaxIdle(MAX_IDLE);
config.setMaxWaitMillis(MAX_WAIT);
config.setTestOnBorrow(TEST_ON_BORROW);
//在将连接放回池中前,自动检验连接是否有效
config.setTestOnReturn(true);
//自动测试池中的空闲连接是否都是可用连接
config.setTestWhileIdle(true);
pool = new JedisPool(config, ADDR, PORT,TIMEOUT,AUTH);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 多线程环境同步初始化(保证项目中有且仅有一个连接池)
*/
private static synchronized void poolInit() {
if (null == pool) {
initializePool();
}
}
/**
* 获取Jedis实例
* @return
*/
public synchronized static Jedis getJedis() {
if (null == pool) {
poolInit();
}

int timeoutCount = 0;
while (true) {
try {
if (null != pool) {
return pool.getResource();
}
} catch (Exception e) {
if (e instanceof JedisConnectionException) {
timeoutCount++;
if (timeoutCount > 3) {
break;
}
} else {
System.out.println("jedisInfo ... NumActive=" + pool.getNumActive()
+ ", NumIdle=" + pool.getNumIdle()
+ ", NumWaiters=" + pool.getNumWaiters()
+ ", isClosed=" + pool.isClosed());
break;
}
}
break;
}
return null;
}

/**
* 释放jedis资源
* @param jedis
*/
public static void returnResource(final Jedis jedis) {
if (jedis != null) {
pool.close();
}
}

/以下为资料  ,本人没用,只用了上面的getredis方法///

/**
* 绝对获取方法(保证一定能够使用可用的连接获取到 目标数据)
* Jedis连接使用后放回
* @param key
* @return
*/
private String safeGet(String key) {
Jedis jedis = getJedis();
while (true) {
if (null != jedis) {
break;
} else {
jedis = getJedis();
}
}
String value = jedis.get(key);
returnResource(jedis);
return value;
}
/**
* 绝对设置方法(保证一定能够使用可用的链接设置 数据)
* Jedis连接使用后返回连接池
* @param key
* @param time
* @param value
*/
private void safeSet(String key, int time, String value) {
Jedis jedis = getJedis();
while (true) {
if (null != jedis) {
break;
} else {
jedis = getJedis();
}
}
jedis.setex(key, time, value);
returnResource(jedis);
}
/**
* 绝对删除方法(保证删除绝对有效)
* Jedis连接使用后返回连接池
* @param key
*/
private void safeDel(String key) {
Jedis jedis = getJedis();
while (true) {
if (null != jedis) {
break;
} else {
jedis = getJedis();
}
}
jedis.del(key);
returnResource(jedis);
}
/**自定义的一些 get set del 方法,方便使用**/
public JSONObject getByCache(String key) {
String result = safeGet(key);
if (result != null) {
return (JSONObject) JSONObject.parse(result);
}
return null;
}
public String getByCacheToString(String key) {
String result = safeGet(key);
if (result != null) {
return result;
}
return null;
}
public List<JSONObject> getArrayByCache(String key) {
String result &#61; safeGet(key);
if (result !&#61; null) {
resultList &#61; JSONArray.parseArray(result, JSONObject.class);
return resultList;
}
return null;
}
public JSONArray getJSONArrayByCache(String key) {
String result &#61; safeGet(key);
if (result !&#61; null) {
return JSONArray.parseArray(result);
}
return null;
}
public void setByCache(String key, String s) {
safeSet(key, 86400, s);
}
public void setByCacheOneHour(String key, String s) {
safeSet(key, 3600, s);
}
public void setByCacheOneHour(String key, List<JSONObject> json) {
safeSet(key, 86400, JSONObject.toJSONString(json));
resultList &#61; json;
}
public void setByCache(String key, JSONObject json) {
safeSet(key, 86400, JSONObject.toJSONString(json));
}
public void setByCache(String key, List<JSONObject> list) {
safeSet(key, 86400, JSONObject.toJSONString(list));
resultList &#61; list;
}
public void setByCache(String key, JSONArray array) {
safeSet(key, 86400, JSONArray.toJSONString(array));
}
public void setByCacheCusTime(String key, String s, int time) {
safeSet(key, time, s);
}
public void delByCache(String key) {
if (null !&#61; safeGet(key)) {
safeDel(key);
}
}
public JSONObject toJSON(DBObject db) {
return (JSONObject) JSONObject.toJSON(db);
}
public List<JSONObject> toJSON(List<DBObject> list) {
List<JSONObject> json &#61; new ArrayList<>();
for (DBObject aList : list) {
json.add((JSONObject) JSONObject.toJSON(aList));
}
return json;
}
public boolean notNull() {
return resultList !&#61; null && resultList.size() > 0;
}
public List<JSONObject> getResult() {
return resultList;
}

/测试main方法///

public static void main(String[] args) {
try {
testJedisPool();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void testJedisPool() throws Exception {
//创建一个连接池对象
//系统中应该是单例的。
JedisPool jedisPool &#61; null;
//从连接池中获得一个连接
Jedis jedis &#61; null;
try {
jedisPool &#61; new JedisPool("60.205.59.98", 6379);
jedis &#61; jedisPool.getResource();
jedis.auth("changdee8068");
jedis.set("name", "ceshi");
System.out.println(jedis.get("name"));
} catch (Exception e) {
e.printStackTrace();
}finally{
//jedis必须关闭
jedis.close();
//系统关闭时关闭连接池
jedisPool.close();
}
}
}

 

转:https://www.cnblogs.com/whb11/p/7238825.html



推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
author-avatar
手机用户2602926865
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有