容器教程的路还很长,笔者尽可能根据实践来不断地完善。因为在编写的过程当中还会有完善和补充,后续可能会以番外来补充。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项目。又好又快地实现排行榜!