測試平台系列(81) 編寫在線執行Redis功能
大家好~我是
米洛
!我正在從0到1打造一個開源的介面測試平台, 也在編寫一套與之對應的完整
教程
,希望大家多多支援。歡迎關注我的公眾號
測試開發坑貨
,獲取最新文章教程!
回顧
上一節我們牛刀小試
,編寫了redisManager,並且成功執行了redis命令。
那這一節,就讓我們來折騰下在線執行Redis命令。
由於某些特定的原因,在使用aredis的時候有了一些不好的體驗,主要是以下幾個方面, 所以我打算棄坑了。
- get和set操作沒有支援中文,非常難受
- 對於報錯資訊不是那麼友好,因為我這邊出現了一個連接出錯的問題,發現對方的error是ConnectionError,裡面毫無內容
- 之前也說了,遷移成本巨低,所以我們可以完美切回用戶最多的同步庫(如果踩坑也有人一起想辦法)
安裝redis和redis-py-cluster
pip3 install redis redis-py-cluster
改寫Manager類
其實要改變的並不多,看下git的改動就知道了:
- 修改引入路徑
- 修復之前的bug
- 改寫cluster
完善在線執行命令的方法
這樣我們的後端介面就編寫完畢了,因為我們想做的是類似redis-cli的功能。
-
尋找前端組件
我們需要一個web版本的終端,所以我在github尋找了很久,找到了這樣一款品質還不錯的:
- 最終效果
還是比較丑,左側是現有的redis連接配置,右側是類似redis-cli的客戶端頁面。
在右側執行語句以後,就會調用我們剛才編寫的redis在線執行介面
。
湊合能用就行。給大家看看使用gif:
目前只支援基礎的操作,包括常見的:
get
set
hget
hset
hgetall
等等
自動更新Redis
每當配置有變更的時候,我們都需要變更RedisManager中的數據
,所以我們之前為之編寫了Refresh方法。
我們修改update/delete方法:
這裡的background_tasks是來自fastapi的後台任務,如果大家了解go的話,這裡就等於:
func test() {
// 業務邏輯
result := xxx
go RedisManager.delete()
return result
}
其實就是一個後台任務,咱們的主體方法可以直接return了。
今天的內容就到這了,下期我們解決APScheduler重複執行
的問題。