Jedis 配置
redis 打算使用这款缓存系统
Jedis 是官方推荐的一款封装组建。
以下是遇到的几个问题
1、使用都非常简单,但是经过我封装之后,使用默认设置。从服务器端看连接数60多个,前段就已经报超时了。所以,有必要对配置文件做一番研究。
经过检查原来是写单例的时候,没给值给值,导致没一个链接就是一个新的请求。改完后,问题解决。
但是当多线程的时候,会出现问题2的现象。
2、新的问题出现,经过多次刷新对缓存的调用的时候。会抛出错误。
redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: o
经谷歌查出,我对JEDIS 使用了单例,他并不是线程安全的。官方建议使用线程池来解决这个问题。
发现用了连接池以后,好像还是默认配置的8个就,线程就开始进入等待状态,不行。
经谷歌,百度翻阅问题几天,调整了线程最大值,什么的。归还线程等等,依然未果。
我试了两种方案,一种是使用线程池的,但是从服务器端窗口看到到60个线程客户端就开始拿不到可用链接,很郁闷。
另一种是单例的不使用线程池的,这种可以解决访问线程卡死的问题,响应很快,但是使用多线程并发测试的时候,JEDIS客户端不是线程安全的,会出现
线程间共享资源问题(我使用的是单例模式),于是尝试了加锁,但是这样极大的降低了响应速度,一个页面连续刷几次就会抛出 READ TIME OUT错误。
最后没办法,启用第一种,继续尝试各种方法,考虑服务端版本问题,去了官网查阅。下了一个最新的64位的版本,线程问题迎刃而解