您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關高效異步redis客戶端aredis優劣勢原理,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
背景
aredis 是一款由同步的 redis 客戶端 redis-py 改寫而成的高效的異步 redis 客戶端,在最新的 1.0.7 版本中完成了對于 redis 集群的支持。
改動
主要重寫了底部建立連接和讀取數據部分的代碼,接口部分都向下兼容,便于使用者從 redis-py 的同步代碼遷移到 async 和 await 的協程版本,詳細文檔請看 aredis 文檔
使用
安裝 pip install aredis
具體姿勢可以參閱項目文檔和例子,接口向下兼容 redis-py,支持 Python 3.5 及以上版本,在最新的 1.0.7 版本中也支持 redis cluster,并且對于 Python 3.6 還支持各個數據類型的 scan iter 操作。
一個簡單的例子如下所示:
>>> import aredis
>>> import asyncio
>>> r = aredis.StrictRedis(host='localhost', port=6379, db=0)
>>> loop = asyncio.get_event_loop()
>>> async def test():
>>> await r.set('foo', 'bar')
>>> print(await r.get('foo'))
>>> loop.run_until_complete(test())
b'bar'
優勢
使用了協程的異步客戶端相較于同步客戶端來說由于使用了 Python 的事件循環等多余代碼,實際上運行效率是較低的,但是好處在于它不會阻塞你的 io,你可以在網絡 io 進行的同時進行別的操作,aredis 比較適用于爬蟲、http 服務器等密集網絡 io 的操作,使得你的代碼不用等上 redis 操作的時間。
而相比于現有的兩款支持 async/await 的 redis 客戶端來說:
aioredis:
aioredis 要求裝上 hiredis , 而 aredis 可以不需要相關依賴地運行,速度上兩者持平且都可以使用 hiredis 來作為 parser ,用 uvloop 代替 asyncio 的 eventloop 來加速
asyncio_redis:
asyncio_redis 使用了 Python 提供的 protocol 來進行異步通信,而 aredis 則使用 StreamReader 和 StreamWriter 來進行異步通信,在運行速度上兩倍于 asyncio_redis ,附上 benchmark
而且以上兩款客戶端目前都還沒有對于集群的支持,相對來說 aredis 的功能更為全面一些。
劣勢
現在對于編碼的支持還不是那么完善,大部分命令還是用 bytes 類型作為返回值,且目前只支持 Python 3.5 及以上的版本
關于高效異步redis客戶端aredis優劣勢原理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。