• Redis学习---Redis操作之Python连接


    PyCharm下的Redis连接

    imageimage

    连接方式:

    1. 操作模式

    redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py

    2. 连接池

    redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。

    注: 一次连接下的多个操作: 管道操作[PipeLine]

    Redis的优化操作

        1. 连接池

        2.管道  【Redis是单线程操作,异步高效IO,IO多路复用,epoll】

    image

     操作模式连接Redis

    myRedis.py  [注意取名才不能用redis.py,否则会报错]

    import redis
    r = redis.Redis(host='192.168.2.105', port=6379)
    # r = redis.Redis(host='192.168.2.105', port=6379, password=123)  # 带密码认证的redis操作
    r.set('hello2018', 'world2018')
    print(r.get('hello2018'))

    结果显示:

    image

    reids.Redis属性列举:

    image

    连接池连接Redis

    连接池连接Redis

    import redis
    pool = redis.ConnectionPool(host='192.168.2.105', port=6379, password=123)
    r = redis.Redis(connection_pool=pool)
    r.set('name', 'ftl2200')
    name = r.get('name')
    print(name)

    image

    管道[PipeLine]连接Redis

    【更多参考】https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html

    管道更适合2个程序之间的数据共享...

    redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。必须执行execute()函数后才执行该操作。

    import redis
    
    pool = redis.ConnectionPool(host='192.168.2.105', port=6379, password=123)
    r = redis.Redis(connection_pool=pool)
    # pipe = r.pipeline(transaction=False)
    pipe = r.pipeline(transaction=True)  # 原子操作,类似事务,所有的执行成功则操作成功
    pipe.get('name')
    pipe.get('age')
    pipe.execute()  # 从池中获取并执行

    Redis的发布和订阅

    【更多参考】http://www.cnblogs.com/alex3714/articles/6217453.html

    Redis问题解决

    问题1; Py连接Redis失败:

    问题想象:

    image

    问题定位:

    0. 查看本机IP以及远程服务器6379端口是否OK

    image

    1. 判断IP是否ping通

    image

    2. 判断是否是防护墙阻隔

    image

    3. 判断6379端口是否打开

       netstat -lntpu | grep 6379

    image

    4. 修改Redis服务,增加IP访问

     sudo vi /etc/redis/redis.conf
       # 默认只有127.0.0.1可以访问Redis
    image

    5. 重启服务

       /etc/init.d/redis-server stop
       /etc/init.d/redis-server start
    

    image

    6. 查看服务

    netstat -lntpu | grep 6379

    image

    问题2: 报错Redis module 'redis' has no attribute 'Redis'

    问题现象:image

    问题解决:

    我们的文件名redis.py跟官方定义的redis.py重名,默认就叫原则,所以找不到Redis属性,更改文件名称为myRedis.py解决

    问题3: Redis的连接是不安全的,不需要密码

               Redis学习---Redis的免密操作

  • 相关阅读:
    2020十一届蓝桥杯-七月省赛题解
    ES6 Generator与C#迭代器
    .NET Core微服务部分知识点
    js点击图片传给一个空的div内放大显示
    Jmeter 中 CSV 如何参数化测试数据并实现自动断言
    安装nvidia-docker2报错E: Unable to locate package nvidia-docker2
    微信小程序-点击事件传递参数
    2020牛客暑期多校训练营(第八场)I Interesting Computer Game K Kabaleo Lite
    Count the Colors
    Basic Gcd Problem
  • 原文地址:https://www.cnblogs.com/ftl1012/p/9426545.html
Copyright © 2020-2023  润新知