python 连接 Linux 的 redis 报错 (redis.exceptions.ConnectionError: Error 10061 ...由于目标计算机积极拒绝,无法连接)
文章目录
未指定IP地址报错
😑
我的报错如下:
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “D:\wjpythonwj\redis_1.py”, line 21, in
result = rs.set(‘name’,‘itcast’)
File “D:\python3\lib\site-packages\redis\commands\core.py”, line 2127, in set
return self.execute_command(“SET”, *pieces, options)
File “D:\python3\lib\site-packages\redis\client.py”, line 1215, in execute_command
conn = self.connection or pool.get_connection(command_name, options)
File “D:\python3\lib\site-packages\redis\connection.py”, line 1386, in get_connection
connection.connect()
File “D:\python3\lib\site-packages\redis\connection.py”, line 620, in connect
raise ConnectionError(self._error_message(e)) redis.exceptions.ConnectionError: Error 10061 connecting to localhost:6379. 由于目标计算机积极拒绝,无法连接。
.
👽学会看报错信息非常重要,我恰恰忽略了最后一句redis.exceptions.ConnectionError: Error 10061 connecting to localhost:6379. 由于目标计算机积极拒绝,无法连接
报错信息显示: 拒绝连接localhost:6379
此时应该使用ip add
查看Linux的IP地址和端口号(本地虚拟机VMware
是虚拟出来的一层设备,与127.0.0.1有区别!!!)
[root@localhost /]# ip add1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:ad:7b:f0 brd ff:ff:ff:ff:ff:ff inet 192.168.153.133/24 brd 192.168.153.255 scope global noprefixroute dynamic ens33valid_lft 1699sec preferred_lft 1699sec inet6 fe80::2b7f:aef3:82b:78e3/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft forever inet6 fe80::cf5a:4e51:97df:a48/64 scope link noprefixroute valid_lft forever preferred_lft forever
画重点
:IP地址是192.168.153.133
👏所以python(pycharm)连接Linux中的redis时需要指定IP地址为192.168.153.133
# encoding=utf-8import redisif __name__=="__main__": ip='192.168.153.133' #创建redis的连接实例 #我们在连接/花费外界资源的时候一定要注意使用try try: rs=redis.Redis(host=ip,port=6379) #如果连接的是云服务器也可以不指定IP和端口 except Exception as e: print(e) #操作string #添加set key value result = rs.set('name','itcast') print(result)
连接线程池代码
import redisip = '192.168.153.133'conn_pool = redis.ConnectionPool(host=ip, port=6379)r = redis.Redis(connection_pool=conn_pool)r.set('name','zjh')print(r.get('name')) #b'zjh'
未修改redis.conf报错
vim /etc/redis/redis.conf #找到自己目录下的redis.conf
vim查找指定内容:/ 要寻找的内容
1、接触本地IP的绑定 bind
2、关闭保护模式protected-mode (把默认的yes改为no)
防火墙问题,未开放6379端口号
1、设置开启某个端口(不拦截redis的6379端口)
firewall-cmd --zone=public --add-port=6379/tcp --permanentfirewall-cmd --zone=public --add-port=80/tcp --permanent
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
2、重启防火墙
firewall-cmd --reload
防火墙其他常用命令
firewall-cmd --state #查看防火墙状态,是否是runningfirewall-cmd --reload #重新载入配置,比如添加规则之后,需要执行此命令firewall-cmd --get-zones #列出支持的zonefirewall-cmd --get-services #列出支持的服务,在列表中的服务是放行的firewall-cmd --query-service ftp#查看ftp服务是否支持,返回yes或者nofirewall-cmd --add-service=ftp #临时开放ftp服务firewall-cmd --add-service=ftp --permanent #永久开放ftp服务firewall-cmd --remove-service=ftp --permanent #永久移除ftp服务firewall-cmd --add-port=80/tcp --permanent #永久添加80端口 iptables -L -n #查看规则,这个命令是和iptables的相同的man firewall-cmd #查看帮助systemctl stop firewalld.service#停止firewallsystemctl disable firewalld.service #禁止firewall开机启动更多命令,使用 firewall-cmd --help 查看帮助文件
重启redis
[root@localhost redis]# redis-server redis.conf[root@localhost ~]# redis-server /etc/redis/redis.conf #在其他目录指定启动redis.conf[root@localhost redis]# redis-cli #连接redisctrl+c退出!!