python连接自建redis服务器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yockie/article/details/78965985

步骤

  1. 先在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已正确运行。

  1. 本机(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:

  1. 修改bind信息:bind 0.0.0.0。bind默认绑定本机ip,即只允许本机访问,修改为0.0.0.0,redis server允许通过外网连接

  2. 关闭守护进程,deamonize no。(这项可能不重要,有的地方说改成yes,反正我最后成功时是no)

  3. 关闭redis的保护模式:protected-mode no。保护模式是指是否允许其他ip的设备访问redis,开启则只允许本机进行访问。

  4. 取消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

猜你喜欢

转载自blog.csdn.net/yockie/article/details/78965985