在云端安装好了redis,绑定了6379端口,设置开机自启动。

在电脑上用springboot+mybatis搭建了一个简单程序,用来连接远程的redis写数据。

一开始,往redis写数据时,发现控制台报 Unexpected end of stream 异常,百度后根据 https://github.com/xetorthio/jedis/issues/1029 中的解答重写了RedisConfig中获取连接池部分的代码,代码如下:

@Beanpublic JedisPoolConfig jedisPoolConfig() {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxTotal(200);jedisPoolConfig.setMaxIdle(50);jedisPoolConfig.setMinIdle(8);jedisPoolConfig.setMaxWaitMillis(10000);jedisPoolConfig.setTestOnBorrow(true);jedisPoolConfig.setTestOnReturn(true);logger.info("******** Create jedis pool successfully! ********");return jedisPoolConfig;}

 重写后发现异常变成了:

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

Caused by: java.util.NoSuchElementException: Unable to validate object at

搜索了一下,有人说是redis的网络ping不通或者防火墙导致访问不了,但我看了服务器,排除了这几个问题。

然后看到有人说把setTestOnBorrow(true)改成setTestOnBorrow(false)看看,然后看了下setTestOnBorrow里面的源码,这个方法会验证Jedis实例,如果不存在,会把异常封装后再抛出来,所以先把true改成false再试一次,发现异常变成以下信息:

(error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the lookback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the --portected-mode no option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

这个就是根本原因,redis有一个保护模式(Protected-mode ),为了禁止公网访问redis cache,加强redis安全的。

它启用的条件,有两个:
1) 没有bind IP
2) 没有设置访问密码

所以原因就是我redis数据库没有设置密码导致的无法从外网访问redis数据库,设置密码以后就可以正常访问了,解决。

参考资料:

https://blog.csdn.net/aubdiy/article/details/53511410

https://github.com/xetorthio/jedis/issues/1029

https://blog.csdn.net/a4810875/article/details/80669536

http://www.cnblogs.com/wangqingyi/articles/5575419.html

https://www.oschina.net/question/148950_166301

转载于:https://www.cnblogs.com/shubiao/p/10669565.html

玩耍redis遇到的问题之记录相关推荐

  1. 使用Java读取 “Python写入redis” 的数据踩坑记录

    https://my.oschina.net/u/2338224/blog/3061507 使用Java读取 "Python写入redis" 的数据踩坑记录 https://seg ...

  2. [redis]知识回顾之redis主从+哨兵搭建简要记录

    1.先准备环境 家里的万年老爷机(120G的SSD,300G硬盘 ),手机热点下载,所以只能少利用空间资源,用virtualBox装centos7纯净版 其中要点: 1.virtualbox创建新机要 ...

  3. 使用redis存储用户的浏览记录

    用户历史浏览记录:1).什么时候添加历史浏览记录:访问商品的详情页面的时候,添加历史浏览记录2).什么时候获取历史浏览记录:访问用户中心个人信息页的时候获取历史浏览记录3).历史浏览记录需要存储在哪里 ...

  4. Redis集群安装问题记录 RVM

    Redis集群安装问题记录 RVM 1.问题描述 2.问题分析 3.问题解决 4.总结 1.问题描述   使用gem安装redis出现以下错误. ERROR: Error installing red ...

  5. redis应用场景(2)日志记录及指标统计

    使用redis存储业务信息,同时也可以存储系统运维信息,比如日志和计数器来收集系统当前的状态信息,挖掘正在使用系统的顾客信息,以及诊断系统问题,发现潜在的问题.当然,系统日志信息及统计信息也可以存储在 ...

  6. java redis 实现pv uv_redis实战-记录PV与UV

    背景 记录网页访问的PV与UV,其中PV需要统计每十五分种内的数据, 比如9:00-9:15为一个统计区间,可以获取指定日期指定时间 的片的数据 统一配置 import redis client = ...

  7. Redis设计与实现学习记录《一》

    文章目录 数据结构章节 SDS 数据结构 1.空间预分配 2.惰性空间释放 3.二进制安全 4.兼容部分C字符串函数 数据结构章节 数据库键总是一个字符串对象 数据库键的值可以是: 字符串对象 列表对 ...

  8. 【SpringBoot】SpringBoot + Redis集群配置(项目记录)

    开发过程中首次使用了redis,也是一点一点边学边开发,期间遇到了一些坑所以做下记录防止以后忘记. 首先代码里只用到了单机版的redis,但因为后续数据量的问题改成了集群版,这里记录集群版的基本配置, ...

  9. 初次玩耍lucene.net,一个小小的记录

    lucene.net虽说是强大,但是我还是一年前第一次玩耍,然后就没有然后了,最近准备养成记录博客的习惯了,所以又玩了玩,回来记录一下 首先新建一个类,便于调用 public class Lucene ...

最新文章

  1. Android小项目之---选择对话框(附源码)
  2. swoole单台并发php,php swoole 并发多少?
  3. POJ 1679 - The Unique MST(次小生成树)
  4. c++排序数组下标_看动画学算法之:排序 - 基数排序
  5. 用python做透视表_用Python实现数据的透视表的方法
  6. 【深搜】 棋盘 【NOIp普及组 2017 第三题】 (luogu 3956/ssl 2851)
  7. java 断点续传 开源_java断点续传后台代码
  8. Delphi Android下包含第三方DEX
  9. [转]Ogre:Hardwarebuffer
  10. java定时发送_Java 定时发送邮件 | 学步园
  11. hdu acm 1241
  12. 英语简历计算机能力描述,简历计算机水平描述
  13. 驱动精灵扩展版(集成万能网卡驱动)无法自动识别网卡的解决方案
  14. jeeplus框架简介
  15. 集合collection
  16. 手机号正则判断最新版 包含199、198、166开头的号码
  17. Keystore介绍
  18. 股票交易接口开发原理是什么?
  19. Java如何将组件添加到桌面上,做Swing桌面程序,该怎样将组件与业务逻辑分离?...
  20. Spring SpringMVC SpringBoot SpringCloud概念及关系

热门文章

  1. 深入理解java虚拟机章节_深入理解java虚拟机-第六章
  2. 过年用计算机弹奏,过年实用,你可能需要的亲戚称呼计算器
  3. 灰光和彩光_波分百科(一):认识光
  4. pygame重新开始_Pygame(十八)音乐
  5. jeesite如何已生成数据的数据源_jeesite 多数据源配置
  6. postgresql分页用法_postgresql分页数据重复问题的深入理解
  7. Python字符串等于
  8. Python多处理示例
  9. ThreadPoolExecutor – Java线程池示例
  10. java实例摘要(二)