Redis学习---Redis操作之Python连接
PyCharm下的Redis连接
连接方式:
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】
操作模式连接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'))
结果显示:
reids.Redis属性列举:
连接池连接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)
管道[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失败:
问题想象:
问题定位:
0. 查看本机IP以及远程服务器6379端口是否OK
1. 判断IP是否ping通
2. 判断是否是防护墙阻隔
3. 判断6379端口是否打开
netstat -lntpu | grep 6379
4. 修改Redis服务,增加IP访问
sudo vi /etc/redis/redis.conf # 默认只有127.0.0.1可以访问Redis
5. 重启服务
/etc/init.d/redis-server stop /etc/init.d/redis-server start
6. 查看服务
netstat -lntpu | grep 6379
问题2: 报错Redis module 'redis' has no attribute 'Redis'
问题解决:
我们的文件名redis.py跟官方定义的redis.py重名,默认就叫原则,所以找不到Redis属性,更改文件名称为myRedis.py解决
问题3: Redis的连接是不安全的,不需要密码
相关文章
- redis实战笔记(5)-第5章 使用 Redis构建支持程序
- python爬虫知识点总结(十二)使用Redis和Flask维护动态代理池
- redis安装与使用(windows端)+Redis设置Auth认证保护+redis的管理工具:Redis Desktop Manager
- How to run python interactive in current file's directory in Visual Studio Code? Python路径问题
- 用Python批量把文件复制到另一个文件夹的实现方法
- Python批量给店铺图片素材加Logo
- python Flask 学前班
- 地球引擎初级教程——Python API 语法(内涵JavaScript转python工具包介绍)
- Google Earth Engine(python)——用 Python 修复影像栅格的接缝
- Python怎么就火起来了?学会python可以做的兼职
- 零基础自学Python需要多长时间从入门到精通?学python能兼职挣钱吗?怎么挣钱?
- Python 实现文本文件多路归并排序
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- urllib与urllib2的学习总结(python2.7.X): python urllib与urllib2
- Python win32api提取exe图标icon
- 不可不知道的python装饰器
- 《Python面向对象编程指南》——2.5 __bytes__()方法
- 基于Scrapy框架的Python新闻爬虫
- Python 数据分析教程之如何验证线性回归的假设,线性回归的假设是什么?以及如何用python验证它们?
- Python 教程之如何使用 matplotlib 在 python 中绘制数学函数
- Python代码大全之selenium 从网页提出数据并存储到sqlite数据库(完整代码)
- Python编辑器(PyCharm)超详细安装教程
- Python requests 报错解决集锦
- Redis(1.18)redis阻塞分析
- 曹工说Redis源码(8)--面试时,redis 内存淘汰总被问,但是总答不好