.NET redis 客戶端開源元件 FreeRedis (繼 CSRedisCore 之後重寫)
阿新 • • 發佈:2020-11-08
## 什麼是 FreeRedis
FreeRedis 是一款 .NET redis 客戶端開源元件,以 MIT 協議開源託管於 github,目前支援 .NET 5、.NETCore 2.1+、.NETFramework 4.0+、Xamarin,有可能已經支援 AOT 編譯(目前未測試,但會往這個方向走)。
FreeRedis 會嚴格按照 FreeSql 的開源方式,做好單元測試,相容平臺,簡單易用,有問必答,有求必應的態度,為中國 .NET 開源事業做一點點貢獻。
感謝大家的支援,專案還未公開就已經獲得 66 星。目前專案仍在起步階段,歡迎小夥伴參與進來,貢獻測試、或程式碼、或建議都可以。
專案當前的狀態:
- 版本 0.0.8(目前不建議使用在生產環境)
- 單元測試 268 個
- 支援 叢集、哨兵、主從(已通過測試)
- 支援 連線池
- 支援 .NET5/.NETCore 2.1+/.NET4.0+
- 支援 Redis6.0 所有型別
- 支援 Redis6.0 RESP3 協議
- API 仍然與 redis-cli 命令保持一致
- 採用最寬鬆的開源協議 MIT [https://github.com/2881099/FreeRedis](https://github.com/2881099/FreeRedis)
---
## 專案由來
說來話長,2016 年之前本人寫了一年多 nodejs 服務端應用,使用過 node-redis 元件,真心好用。在此期間有同事不停安利 .NET 可以跨平臺了,勸我快回來搞 .NET,開始我是抗拒做螃蟹第一人的,不知道是哪天下午閒著蛋疼去體驗了一把 .NETCore 1.0-previewXX(不記得哪個版本了)。試了一把被吸引住了,體驗感受和 expressjs 像極了,再也看不見以往 webform/mvc 的缺點。
於是我準備入坑了,入坑第一件事除了 hello world,還需要做相關調研:
- 效能OK
- 設計OK
- 發展OK(暫時的定級)
- 相關元件OK(HttpClient、Redis、Ado.NET、等等基礎元件)
初始調研完成之後,接下下就要抽時間選型框架了,最終從眾多框架中選擇了合適團隊的一款:https://github.com/simplcommerce/SimplCommerce ,在這個專案原有基礎之上,結合企業規範要求定製改造,大約兩個月時間完成了可生產的狀態。(框架不求開始盡善盡美,只求使用中不斷打磨,最終走向完美)
理想豐滿現實骨幹,接下來的故事就是遇到生產故障了,StackExchange.Redis、HttpClient 關於這兩個元件的問題,以前講過現在就不說了(萬萬沒想到這麼大的元件使用都能出現問題)。吃螃蟹就會掉坑,掉了坑就要想辦法解決,最終與 csredis 元件結緣。
以當時的情形縱觀 .NET 所有 redis 客戶端元件,只有 csredis 原始碼最易改造支援 .NETCore(水平有限見諒),csredis 2014 年停止更新,本人於 2016 年將其改造支援 .NETCore 為主,以及增加連線池管理、叢集、哨兵、redis2.8 以上的命令,在公司專案生產環境使用一年半載之後開源。
- csredis 原原始碼地址:https://github.com/ctstone/csredis
- CSRedisCore 原始碼地址:https://github.com/2881099/csredis
CSRedisCore 開源這到久,nuget 下載量達到 60W,收集需求若干,bug 若干(有解決了的、也有未能重現的),基於我已經對 redis 這塊很熟悉,然後 redis 5.0/6.0 又新增了蠻多特性,重新寫一款 bug 更少、可維護性更好的想法產生了。
經過幾個月的墨跡終於走通可用了,專案最終命名:FreeRedis
感謝 Nuget 轉讓包的大兄弟。
---
## 如何使用