暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis | Day36 python与Redis集群的交互

走向易富强之路 2021-07-19
1878

背景说明:
1、为了防止三天打鱼两天晒网式学习
2、每日更新1-2个小知识点或者案例
3、只看和跟着做的理解程度是不一样的
4、建议一起打卡练习
5、互相督促打卡 + v:yifuqiang2021

Day36

目标:
  • 删除集群
  • 搭建集群
  • 阿里云服务器配置
  • python连接阿里云redis

一、删除集群
  • 直接杀死所有进程(直接暴力) kill -9 $(pidof redis-server)
  • 删除redis数据存储文件,可以用mobaxterm界面化操作一步到位
二、搭建集群
  • 补充一份最新的配置文件
    port 7000
    daemonize yes
    protected-mode no
    cluster-enabled yes
    cluster-node-timeout 15000
    dbfilename dump7000.rbd
    pidfile '/root/redis-6.2.4/redis-cluster/pidfile/7000.pid'
    logfile '/root/redis-6.2.4/redis-cluster/log/redis7000.log'
    cluster-config-file '/root/redis-6.2.4/redis-cluster/conf-file/7000_node.conf'

    三、阿里云服务器配置
    • 进入安全组配置,添加配置
    • 添加redis集群的端口号:这里我配的端口号是7000,7001,7002,7003,7004,7005,对应阿里云配置7000/7005
    • redis集群总线端口为redis客户端端口加上10000,对应的阿里云配置17000/17005


    • 补充一张图说明reids集群内部之间的通讯:参考文章链接在底部


    • 进入客户端:./src/redis-cli -h 39.103.197.175 -p 7000
    • 通过cluster info命令查看集群的情况可以也可以看得出

    四、python连接阿里云redis
    • 安装插件
    • python连接阿里云redis

    a、安装插件:redis-py-cluster
    • 命令安装:pip install redis-py-cluster
    • 或者通过pycharm搜索redis-py-cluster

    b、创建⽂件redis_cluster.py
      # encoding ='utf-8'
      from rediscluster import *
      if __name__ == '__main__':
      try:
      # 构建所有的节点,Redis会使⽤CRC16算法,将键和值写到某个节点上
      startup_nodes = [
      {'host': '39.103.197.175', 'port': '7000'},
      {'host': '39.103.197.175', 'port': '7001'},
      {'host': '39.103.197.175', 'port': '7002'},
      ]
      # 构建RedisCluster对象
      src=RedisCluster(startup_nodes=startup_nodes,decode_responses=True)
      # 设置键为name、值为itheima的数据
      result=src.set('name','itheima')
      print(result)
      # 获取键为name
      name = src.get('name')
      print(name)
      except Exception as e:
      print(e)
      运行结果:

      五、遇到的问题
      • 建立节点集群的命令中的ip地址需要换成阿里云的公网ip,如果不是用python去连接的时候会报错
      • 阿里云的安全组规则一定要配允许访问的redis端口号和redis集群总线端口号!!如果没有配,会报连接超时的提示像TTL开头的
      • 如果以上两点都配置后,执行后仍没有成功,要么关掉防火墙,要么配置防火墙允许访问的端口
      • 如果还不行。。。建议找个大佬抱大腿问问比如焕权大佬

      六、用到的防火墙命令汇总
      • 开启防火墙:systemctl start firewalld.service
      • 添加端口:firewall-cmd --zone=public --add-port=6379/tcp --permanent
      • 重启防火墙:firewall-cmd --reload
      • 查看通过的端口:firewall-cmd --zone=public --list-ports
      • 查看端口是否开发成功:firewall-cmd --query-port=6379/tcp
      • 查看防火墙状态:systemctl status firewalld
      • 查看开机是否启动防火墙服务:systemctl is-enabled firewalld
      • 关闭防火墙:systemctl stop firewalld systemctl status firewalld
      • 禁用防火墙:systemctl disable firewalld systemctl is-enabled firewalld

      七、参考文章汇总
      • https://blog.csdn.net/yelllowcong/article/details/78377208
      • https://www.cnblogs.com/xiujin/p/11494471.html
      • https://www.pianshen.com/article/5152486222/
      • https://www.pianshen.com/article/5152486222/

      碎碎念:再次感谢焕权大佬,没有大佬就没有这一篇。没有这一篇redis学习就这么中断了,redis的学习就这么不完整了!!!再怎么感谢都不为过!!!感谢焕权大佬!!!感谢焕权大佬!!!感谢焕权大佬!!!

      “你的鼓励,是我继续的动力”

      文章转载自走向易富强之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论