日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Docker最全教程——Redis容器化以及排行榜实战(十三)

發布時間:2025/4/16 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker最全教程——Redis容器化以及排行榜实战(十三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Docker最全教程——Redis容器化以及排行榜實戰(十三) 原文:Docker最全教程——Redis容器化以及排行榜實戰(十三)

前言

容器教程的路還很長,筆者盡量根據實踐來不斷地完善。由于在編寫的過程中還會有完善和補充,后續可能會以番外來補充。

接下來會分享TeamCity、樹莓派等內容,節奏可能會有點跳脫。

另外,長沙.NET 社區已經初步成立,有興趣的朋友可以加群參與互動和交流,具體見magiccodes公眾號菜單,如無法加入,請聯系客服。

?

Redis容器化

Redis是一個開源的、支持網絡、可基于內存亦可持久化的日志型、高性能的Key-Value數據庫,并提供多種語言的API。其支持存儲的value類型相對很多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set?——有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。

官網地址:https://redis.io/

?

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

??

運行Redis鏡像

Powershell:

docker run --name myRedis `

??-p 6379:6379 `

??-v d:/temp/data/redis:/data `

??-d redis

?

使用redis-cli

進入redis-cli:

docker exec -it myRedis redis-cli

?

設置一個key-value,比如key為name,value為test:

查看value:

?

提供智能提示:

?

使用Redis?Desktop Manager管理Redis

Redis?Desktop Manager是一個開源的跨平臺的redis桌面管理工具。

官網地址:https://redisdesktop.com/

使用起來比較簡單,首先我們需要添加連接:

?

接下來,就可以訪問我們剛創建的Redis數據庫了:

?

又好又快地實現排行榜

Redis的應用場景很多,鍵值對大家經常用,這個我們就不多講了,這里我們做一個排行榜實踐來分享給大家。

?

使用redis?ci

排行榜我們需要使用到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實踐

在.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項目。又好又快地實現排行榜!

?

posted on 2019-02-20 12:56 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/10405900.html

總結

以上是生活随笔為你收集整理的Docker最全教程——Redis容器化以及排行榜实战(十三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。