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的免密操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM