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的連接是不安全的,不需要密碼