欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

高效異步redis客戶端aredis優(yōu)劣勢原理解析

 更新時間:2020年09月30日 11:50:15   作者:lincappu  
這篇文章主要介紹了高效異步redis客戶端aredis優(yōu)劣勢原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

背景

aredis 是一款由同步的 redis 客戶端 redis-py 改寫而成的高效的異步 redis 客戶端,在最新的 1.0.7 版本中完成了對于 redis 集群的支持。

改動

主要重寫了底部建立連接和讀取數(shù)據(jù)部分的代碼,接口部分都向下兼容,便于使用者從 redis-py 的同步代碼遷移到 async 和 await 的協(xié)程版本,詳細(xì)文檔請看 aredis 文檔

使用

安裝 pip install aredis

具體姿勢可以參閱項目文檔和例子,接口向下兼容 redis-py,支持 Python 3.5 及以上版本,在最新的 1.0.7 版本中也支持 redis cluster,并且對于 Python 3.6 還支持各個數(shù)據(jù)類型的 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'

優(yōu)勢

使用了協(xié)程的異步客戶端相較于同步客戶端來說由于使用了 Python 的事件循環(huán)等多余代碼,實際上運(yùn)行效率是較低的,但是好處在于它不會阻塞你的 io,你可以在網(wǎng)絡(luò) io 進(jìn)行的同時進(jìn)行別的操作,aredis 比較適用于爬蟲、http 服務(wù)器等密集網(wǎng)絡(luò) io 的操作,使得你的代碼不用等上 redis 操作的時間。

而相比于現(xiàn)有的兩款支持 async/await 的 redis 客戶端來說:

aioredis:

aioredis 要求裝上 hiredis , 而 aredis 可以不需要相關(guān)依賴地運(yùn)行,速度上兩者持平且都可以使用 hiredis 來作為 parser ,用 uvloop 代替 asyncio 的 eventloop 來加速

asyncio_redis:

asyncio_redis 使用了 Python 提供的 protocol 來進(jìn)行異步通信,而 aredis 則使用 StreamReader 和 StreamWriter 來進(jìn)行異步通信,在運(yùn)行速度上兩倍于 asyncio_redis ,附上 benchmark

而且以上兩款客戶端目前都還沒有對于集群的支持,相對來說 aredis 的功能更為全面一些。

劣勢

現(xiàn)在對于編碼的支持還不是那么完善,大部分命令還是用 bytes 類型作為返回值,且目前只支持 Python 3.5 及以上的版本

前排求 star 和 pr 0- 0

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis模仿發(fā)送手機(jī)驗證碼功能

    Redis模仿發(fā)送手機(jī)驗證碼功能

    這篇文章主要介紹了Redis模仿手機(jī)驗證碼發(fā)送功能,通過示例代碼給大家講解通過用戶輸入手機(jī)號以及驗證碼進(jìn)行校驗,代碼簡單易懂,需要的朋友可以參考下
    2021-09-09
  • 在CenOS系統(tǒng)下安裝和配置Redis數(shù)據(jù)庫的教程

    在CenOS系統(tǒng)下安裝和配置Redis數(shù)據(jù)庫的教程

    這篇文章主要介紹了在CenOS系統(tǒng)下安裝和配置Redis數(shù)據(jù)庫的教程,Redis是一個可基于內(nèi)存的高性能NoSQL數(shù)據(jù)庫,需要的朋友可以參考下
    2015-11-11
  • SpringBoot讀寫Redis客戶端并實現(xiàn)Jedis技術(shù)切換功能

    SpringBoot讀寫Redis客戶端并實現(xiàn)Jedis技術(shù)切換功能

    這篇文章主要介紹了SpringBoot讀寫Redis客戶端并實現(xiàn)技術(shù)切換功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • 利用Redis統(tǒng)計網(wǎng)站在線活躍用戶的方法

    利用Redis統(tǒng)計網(wǎng)站在線活躍用戶的方法

    Redis支持對String類型的value進(jìn)行基于二進(jìn)制位的置位操作。通過將一個用戶的id對應(yīng)value上的一位,通過對活躍用戶對應(yīng)的位進(jìn)行置位,就能夠用一個value記錄所有活躍用戶的信息。下面這篇文章主要介紹了利用Redis統(tǒng)計網(wǎng)站在線活躍用戶的方法,需要的朋友可以參考。
    2017-01-01
  • redis實現(xiàn)sentinel哨兵架構(gòu)的方法

    redis實現(xiàn)sentinel哨兵架構(gòu)的方法

    哨兵是一個分布式系統(tǒng),可以在一個架構(gòu)中運(yùn)行多個哨兵(sentinel) 進(jìn)程,這些進(jìn)程使用流言協(xié)議(gossip protocols)來接收關(guān)于Master主服務(wù)器是否下線的信息,這篇文章主要介紹了redis實現(xiàn)sentinel哨兵架構(gòu),需要的朋友可以參考下
    2022-11-11
  • Redis禁用命令、危險命令及規(guī)避方法

    Redis禁用命令、危險命令及規(guī)避方法

    這篇文章主要介紹了Redis禁用命令、危險命令及規(guī)避方法,本文介紹了個非常致命的兩個命令以及用配置文件禁用這些命令的方法,需要的朋友可以參考下
    2015-06-06
  • redis中5種數(shù)據(jù)基礎(chǔ)查詢命令

    redis中5種數(shù)據(jù)基礎(chǔ)查詢命令

    本文主要介紹了redis中5種數(shù)據(jù)基礎(chǔ)查詢命令,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Redis批量生成數(shù)據(jù)的實現(xiàn)

    Redis批量生成數(shù)據(jù)的實現(xiàn)

    本文主要介紹了Redis批量生成數(shù)據(jù)的實現(xiàn),主要介紹了兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Redis去重的3種不同方法匯總

    Redis去重的3種不同方法匯總

    Redis是完全開源免費(fèi)的,遵守BSD協(xié)議,是一個高性能的key-value數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于Redis去重的3種不同方法,需要的朋友可以參考下
    2021-11-11
  • 如何保證Redis與數(shù)據(jù)庫的數(shù)據(jù)一致性

    如何保證Redis與數(shù)據(jù)庫的數(shù)據(jù)一致性

    這篇文章主要介紹了如何保證Redis與數(shù)據(jù)庫的數(shù)據(jù)一致性,文中舉了兩個場景例子介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評論