需求:使用Python代码操作阿里云服务器中的Redis
相信大家在本地使用Redis已经不陌生了,然而最近在学习Python
,教学呢一般都是用的本地安装的Redis
,即用的127.0.0.1:6379
。以前学Java
的时候,是将Redis
安装在VM Ware
的虚拟机上的。为了试试我之前购买了阿里云的服务器,就在想,我可不可以不再开虚拟机,也不在Windows
上安装Redis
,而是在服务器上安装Redis
后,我在笔记本电脑上远程访问呢?办法肯定是有的,期间也搜索了诸多教程,也碰到了些问题,接下来就分享下我的操作心得吧。
1. 在服务器上安装Redis
关于如何在服务器上安装Redis,我主要是用的宝塔一键安装的,开始不知道安装目录在哪,经过查询得知,它安装在了:/www/server/redis
下的。当然也可以通过命令模式安装,我就不细讲了,参考下其他大佬的教程吧。
2. 配置防火墙
由于redis的端口默认是6379
,我们要开启防火墙,不然没法访问,因此还要先安装防火墙相关。
- 安装防火墙命令
yum install iptables-services
- 设置开机自启动
systemctl enable iptables.service
- 顺便介绍常用命令
systemctl stop iptables # 停止
systemctl start iptables # 开启
systemctl restart iptables # 重启
systemctl reload iptables # 重新加载
回归正题,在终端以root
身份登录服务器后,编辑vi /etc/sysconfig/iptables
文件,添加如下行(最好是复制上面默认开启22
端口那一行,防止手敲错,然后只改端口号。以后要开启MySQL
的3306
也是一样的操作):
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
- 保存退出(
:wq
)后,重启防火墙:
systemctl restart iptables
3. 配置redis.conf文件
我是通过宝塔安装的Redis
,所以我的Redis
安装在/www/server/redis
目录下,其配置文件就是redis.conf
。
- 为了保险起见,先备份一下:
cp redis.conf redis.conf.bak
- 注释
bind
行 (我的版本是:6.2.7
,bind
在配置文件第69
行):
vim redis.conf
set nu # 设置显示行号
如图所示,如果不注释就只能服务器本地访问。
3. 此外,还要修改:protectedmode no
, 在第88
行:
之所以要改这里,是因为我后面通过python连接时,报错了,报错信息是:
DENIED Redis is running in protected mode because protected mode is enabled...
总之是很长一串,提示下来就是要关闭保护模式。
- 如果关闭了,最好就把密码顺便设置了,防止被攻击,在第
507
行:
到此,关键的地方基本设置完了,当然还有很多其他的一些设置,比如端口,日志等等,但不在此文章讨论范围内,就不赘述了。 - 设置完后,先关闭已经开启的redis进程
ps -ef | grep redis # 查到pid后,kill
kill -9 (pid)
- 进入
redis
的src
目录下,重新启动redis
服务器
cd /www/server/redis/src
./redis-server ../redis.conf # 因为redis.conf在上一层目录中
- 最后,还要在阿里云控制台中,把当前服务器的ECS实例的安全组里开放
6379
端口,如图所示:
4. 通过Python代码远程访问Redis
使用python
访问redis
要安装redis
包,安装很简单,直接在windows
终端上输入以下命令:
pip install redis
然后python示例代码如下:
# 导包
import redis
redis_cli = redis.Redis(host='***', # 服务器公网ip
port=6379, # 服务器Redis端口号
db=0, # 所访问的Redis的数据库编号
password='') # Redis设置的密码
redis_cli.set('name', 'python connect ecs redis ') # 设置一个字符串
# 关闭连接
redis_cli.close()
打开redis
的一个客户端查看,添加成功!
到此, Python
远程访问服务器Redis
的环境就搭建好了,目标达成!
参考博客
感谢以下大佬的博客:
[1]: https://blog.youkuaiyun.com/qq_43458555/article/details/108228936
[2]: https://blog.youkuaiyun.com/asc_123456/article/details/103135344