Could not get a resource from the pool
意思就是不能获取Redis连接池实例
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:53)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
at com.atguigu.bigdata.sparkmall.common.RedisUtil$.getJedisClient(RedisUtil.scala:26)
at com.atguigu.bigdata.sparkmall.realtime.Req7TimeAdvertClickTrendApplication$$anonfun$main$1$$anonfun$apply$2.apply(Req7TimeAdvertClickTrendApplication.scala:54)
at com.atguigu.bigdata.sparkmall.realtime.Req7TimeAdvertClickTrendApplication$$anonfun$main$1$$anonfun$apply$2.apply(Req7TimeAdvertClickTrendApplication.scala:53)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1951)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1951)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
at org.apache.spark.scheduler.Task.run(Task.scala:99)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:322)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
at redis.clients.jedis.Connection.connect(Connection.java:207)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
查看是否是linux防火墙未开通访问权限:
首先公司需要申请的权限有两个:
分别是redis实例地址和哨兵。那么可以:
ping ip
telnet ip port
1
2
看这两个是否都通。
在项目中就是因为没有申请权限导致。
redis的实例名称和哨兵地址不对
这个是因为地址写错导致的。
每次使用后没有关闭连接
代码中没有finally中关闭连接池,导致连接池一直被占用,别的不能正常使用。
连接的太多,导致连接不上
连接数太多导致连接问题
Redis作为缓存利器,不论是在工作中还是面试中都是需要对其足够了解,那么请你说出Redis的数据结构,你是否了解呢?相信一定有人脱口而出,String、List、Hash、Set、Sorted Set,这里一定一定要注意,问题指的是数据结构而不是数据类型,数据结构是数据类型的底层实现,应该为简单动态字符串、双向链表、压缩列表、哈希表、跳表、整型数组,数据类型和数据结构的关系如下。
了解完这些,我们就知道了Redis键值中的值保存形式,那么Redis的整体结构应该是什么样子呢