
# Redis-py客户端连接Redis（Python）
本章节介绍使用Python Redis客户端redis-py连接Redis实例的方法。更多的客户端的使用方法请参考[Redis客户端](https://redis.io/clients)。
以下操作以通过弹性云服务器上的客户端连接Redis实例为例进行说明。
#### 约束与限制
如果是Redis 7.0实例，推荐[5.0.0](https://github.com/redis/redis-py/releases/tag/v5.0.0)及以上版本。
#### 前提条件
- 已成功创建Redis实例，且状态为"运行中"。创建Redis实例的操作请参考[购买Redis实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713002.html)。
- 已创建弹性云服务器，创建弹性云服务器的方法，请参见[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
- 如果弹性云服务器为Linux系统，该弹性云服务器必须已经安装Python编译环境。
- 连接实例前确保客户端与Redis实例之间网络互通，具体请参考[连接Redis网络要求](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312007.html)。
 
#### Redis-py客户端连接Redis
1. 查看并获取待连接Redis实例的IP地址/域名和端口。
   
   具体步骤请参见[查看和修改DCS实例基本信息](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312016.html)。
   
   
2. 登录弹性云服务器。 
   本章节以弹性云服务器操作系统为centos为例介绍通过Python Redis客户端连接实例。
   
   
3. 连接Redis实例。 
   1. 如果弹性云服务器操作系统没有自带Python，可以使用yum方式安装。
      ```
      yum install python
      ```
      要求系统Python版本为3.6+，当默认Python版本小于3.6时，可通过以下操作修改Python默认版本。
      1. 删除Python软链接文件： rm -rf python
      
      2. 重新创建新指向Python：ln -s pythonX.X.X python，其中X为Python具体版本号。
       
   
   2. 安装Python和Python Redis客户端redis-py。
      1. 如果系统没有自带Python，可以使用yum方式安装。
      
      2. 下载并解压redis-py。
         ```
         wget https://github.com/andymccurdy/redis-py/archive/master.zip
         unzip master.zip
         ```
         
      
      3. 进入到解压目录后安装Python Redis客户端redis-py。
         ```
         python setup.py install
         ```
         安装后执行**python**命令，返回如下信息说明成功安装redis-py：
         图1执行python   
         ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002278891732.png "点击放大") 
       
   
   3. 使用redis-py客户端连接实例。以下步骤以命令行模式进行示例（也可以将命令写入python脚本中再执行）：
      1. 执行**python** 命令，进入命令行模式。返回如下信息说明已进入命令行模式：
         图2进入命令行模式   
         ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002313524429.png "点击放大") 
      
      2. 在命令行中执行以下命令，连接Redis实例。 **单机/主备/读写分离/** proxy**集群：**
         ```
         >>> import redis
         >>> r = redis.StrictRedis(host='XXX.XXX.XXX.XXX', port=6379, password='******', socket_timeout=5, socket_connect_timeout=5)
         >>> rc.set("foo", "bar")
         True
         >>> print(rc.get("foo"))
         'bar'
         >>>
         ```
         其中，XXX.XXX.XXX.XXX为Redis实例的IP地址/域名，"6379"为Redis实例的端口。IP地址/域名和端口获取见[1]，请按实际情况修改后执行。**\*\*\*\*\*\*** 为创建Redis实例时自定义的密码，请按实际情况修改后执行。如果使用实例创建的ACL账号连接，实例密码需要配置为"账号名称:账号密码"。创建或查看ACL账号，请参见[配置Redis ACL访问账号](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-221220.html)。如果实例为免密访问，则省略命令中的, password='\*\*\*\*\*\*'。
         socket_timeout为请求等待响应的超时时间（秒），socket_connect_timeout为连接超时时间（秒），默认None。推荐配置为5s。
         界面显示一行新的命令行，说明连接Redis实例成功。可以输入命令对数据库进行读写操作。
         **集群：**
         ```
         >>> import redis
         >>> startup_nodes = [redis.cluster.ClusterNode("192.168.0.143", "6379"),redis.cluster.ClusterNode("192.168.0.144", "6379"),redis.cluster.ClusterNode("192.168.0.145", "6379")]
         >>> rc = RedisCluster(startup_nodes=startup_nodes, decode_responses=True, password='******', socket_timeout=5, socket_connect_timeout=5)
         >>> rc.set("foo", "bar")
         True
         >>> print(rc.get("foo"))
         'bar'
         >>>
         ```
         
       
   
   
   
   
 
#### 相关文档
如果Redis连接过程出现问题，请参见[Redis连接失败问题排查和解决](https://support.huaweicloud.com/trouble-dcs/dcs-trouble-0715001.html)。
