步骤
先在linux机器上自建redis服务器
1.1. 先在官网下载了最新稳定版的源码压缩包http://download.redis.io/releases/redis-4.0.6.tar.gz,
1.2 解压,make,生成bin在src/下
1.3 执行./src/redis-server
1.4 测试是否成功
>./src/redis-cli
>ping
若回显PONG,则server已正确运行。
- 本机(Mac OS)python redis client环境
2.1 默认已安装python 2.7,pip,pycharm等
2.2 用pip安装redis客户端redis (2.10.6)
2.3 用pip安装hiredis (0.2.0)
2.4 打开pycharm,编写代码:
import redis
r = redis.StrictRedis(host='填server机器的ip地址', port=6379, db=0)
print r
print r.set('foo', 'bar')
print r.get('foo')
出现问题
执行上述代码出现错误:
redis.exceptions.ConnectionError: Error 60 connecting to xx.xx.xx.xx:6379. Operation timed out.
解决
写这篇博文的动力就是这个错误太难找了,国内国外网站找了一圈还是没找到。能找到的常见错误是-2,111,10061,99等,这个60始终没找到。
先按网上允许本机访问到远程redis server的配置设置了一遍redis.conf:
修改bind信息:bind 0.0.0.0。bind默认绑定本机ip,即只允许本机访问,修改为0.0.0.0,redis server允许通过外网连接
关闭守护进程,deamonize no。(这项可能不重要,有的地方说改成yes,反正我最后成功时是no)
关闭redis的保护模式:protected-mode no。保护模式是指是否允许其他ip的设备访问redis,开启则只允许本机进行访问。
取消redis数据库的密码:注释requirepass。
修改后重启redis server:
./src/redis-server ./redis.conf
再次执行本机python脚本,依然出现上述Error 60错误,网络完全无参考。最后在公司内网偶然看到一个资料说“需要修改port,eclipse连接不上默认端口6379”,于是怀疑我遇到的这个问题是否类似,尝试修改了一下port至8379,重启redis-server。修改python脚本中的目标port,执行,果然成功了。通过测试,应该是远程linux机器网络策略禁止了远程机器访问一些端口。最终解决办法:修改port,例如改为8379:
port 8379