容器教程的路還很長,筆者儘可能根據實踐來不斷地完善。因爲在編寫的過程當中還會有完善和補充,後續可能會以番外來補充。git
接下來會分享TeamCity、樹莓派等內容,節奏可能會有點跳脫。github
另外,長沙.NET 社區已經初步成立,有興趣的朋友能夠加羣參與互動和交流,具體見magiccodes公衆號菜單,如沒法加入,請聯繫客服。redis
Redis是一個開源的、支持網絡、可基於內存亦可持久化的日誌型、高性能的Key-Value數據庫,並提供多種語言的API。其支持存儲的value類型相對不少,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set ——有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操做,並且這些操做都是原子性的。docker
官網地址:https://redis.io/shell
Redis 與其餘 key - value 緩存產品有如下三個特色:數據庫
· Redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓的時候能夠再次加載進行使用。緩存
· Redis不單單支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。網絡
· Redis支持數據的備份,即master-slave模式的數據備份。數據結構
· 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。工具
· 豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操做。
· 原子 – Redis的全部操做都是原子性的,意思就是要麼成功執行要麼失敗徹底不執行。單個操做是原子性的。多個操做也支持事務,即原子性,經過MULTI和EXEC指令包起來。
· 豐富的特性 – Redis還支持 publish/subscribe, 通知, key過時等等特性。
官方鏡像:https://hub.docker.com/_/redis
Powershell:
docker run --name myRedis `
-p 6379:6379 `
-v d:/temp/data/redis:/data `
-d redis
進入redis-cli:
docker exec -it myRedis redis-cli
設置一個key-value,好比key爲name,value爲test:
查看value:
提供智能提示:
Redis Desktop Manager是一個開源的跨平臺的redis桌面管理工具。
官網地址:https://redisdesktop.com/
使用起來比較簡單,首先咱們須要添加鏈接:
接下來,就能夠訪問咱們剛建立的Redis數據庫了:
Redis的應用場景不少,鍵值對你們常常用,這個咱們就很少講了,這裏咱們作一個排行榜實踐來分享給你們。
排行榜咱們須要使用到Redis的有序集合。使用這種數據類型,能夠又快又好的來實現咱們的排行榜,好比玩家分數排行。這裏咱們使用Redis-ci來實現一個簡單的排行測試。
這裏,咱們須要熟悉一個命令——ZINCRBY。Redis Zincrby 命令能夠對有序集合中指定成員的分數加上增量值,增量值能夠爲負數(即讓分數減去相應的值),以下所示:
ZINCRBY rank_test 1 "aa"
其中,rank_test爲key,1爲增量值,「aa」爲值。若是key不存在則會自動建立。所有命令以下所示:
經過以上命令,咱們建立了有序集合rank_test以及多個值和分數。接下來,咱們能夠經過ZRANGE命令來查看全部數據:
ZRANGE rank_test 0 -1 withscores
Redis Zrange 返回有序集中,指定區間內的成員。其中成員的位置按分數值遞增(從小到大)來排序,若是咱們須要按照分數從大到小排序,則需添加WITHSCORES。以下圖所示:
若是咱們須要獲取前3條數據,根據分數排名,則能夠執行如下命令:
ZREVRANGE rank_test 0 2 withscores
咱們可使用Redis Desktop Manager工具查看咱們剛纔添加的數據:
整個排行榜實現很是簡單,是否Get到了呢?
利用容器來作實踐,省心不費力哈!
在.NET Core中,使用Redis很是便捷,咱們可使用如下Nuget包:
StackExchange.Redis
官方Github地址:https://github.com/StackExchange/StackExchange.Redis
也可使用Microsoft.Extensions.Caching.Redis:
如下是相關關鍵代碼:
1. 獲取數據庫鏈接
ConnectionMultiplexer.Connect(configuration["RedisCache:ConnectionString"]);
2. 獲取數據庫對象
RedisConnection.GetDatabase(); //經過ConnectionMultiplexer對象獲取
3. 添加有序集合
RedisDb.SortedSetIncrementAsync("Rank_Test", " Test", 1); //參數依次爲key、value和分數
4. 根據分數從大到小獲取前10
RedisDb.SortedSetRangeByRankWithScoresAsync("Rank_Test", 0, 9, StackExchange.Redis.Order.Descending);
如上所示,咱們能夠很是簡單地應用於咱們的.NET Core項目。又好又快地實現排行榜!