Docker最全教程——从理论到实战(十一)
前言
容器教程的路还很长,笔者尽量根据实践来不断地完善。由于在编写的过程中还会有完善和补充,后续可能会以番外来补充。
接下来会分享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项目。又好又快地实现排行榜!
作者:雪雁
出处:http://www.cnblogs.com/codelove/
Docker最全教程——从理论到实战(十一)的更多相关文章
- Docker最全教程——从理论到实战(八)
在本系列教程中,笔者希望将必要的知识点围绕理论.流程(工作流程).方法.实践来进行讲解,而不是单纯的为讲解知识点而进行讲解.也就是说,笔者希望能够让大家将理论.知识.思想和指导应用到工作的实际场景和实 ...
- Docker最全教程——从理论到实战(七)
在本系列教程中,笔者希望将必要的知识点围绕理论.流程(工作流程).方法.实践来进行讲解,而不是单纯的为讲解知识点而进行讲解.也就是说,笔者希望能够让大家将理论.知识.思想和指导应用到工作的实际场景和实 ...
- Docker最全教程——从理论到实战(六)
托管到腾讯云容器服务 托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅. 自建还是托管? 在开始之前,我们先来讨论一个问题——是自建 ...
- Docker最全教程——从理论到实战(五)
往期内容链接 Docker最全教程——从理论到实战(一) Docker最全教程——从理论到实战(二) Docker最全教程——从理论到实战(三) Docker最全教程——从理论到实战(四) 本篇教程持 ...
- Docker最全教程——从理论到实战
Docker最全教程——从理论到实战(一) Docker最全教程——从理论到实战(二) Docker最全教程——从理论到实战(三) Docker最全教程——从理论到实战(四) Docker最全教程—— ...
- Docker最全教程——从理论到实战(一)
容器是应用走向云端之后必然的发展趋势,因此笔者非常乐于和大家分享我们这段时间对容器的理解.心得和实践. 本篇教程持续编写了2个星期左右,只是为了大家更好地了解.理解和消化这个技术,能够搭上这波车. 你 ...
- Docker最全教程---从理论到实战
目录 前言 随着生产力的发展尤其是弹性架构的广泛应用(比如微服务),许多一流开发者都将应用托管到了应用容器上,比如Google.微软.亚马逊.腾讯.阿里.京东和新浪. 从未来的发展方向来看,容器引擎将 ...
- Docker最全教程——从理论到实战(二十二)
前言 最近正在抽时间编写k8s的相关教程,很是费时,等相关内容初步完成后,再和大家分享.对于k8s,还是上云更为简单.稳定并且节省成本,因此我们需要对主流云服务的容器服务进行了解,以便更好地应用于生产 ...
- Docker最全教程——从理论到实战(十五)
前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. 本篇仅作探索,希望 ...
- Docker最全教程——从理论到实战(四)
往期内容链接 https://www.cnblogs.com/codelove/p/10030439.html https://www.cnblogs.com/codelove/p/10036608. ...
随机推荐
- Spark应用开发调优要点总结
调试Spark应用性能的时候,首先应该理解spark是如何工作以及你的spark应用需要何种类型的资源.比如说,机器学习相关的spark应用更依赖cpu计算能力,ETL应用更依赖I/O能力,以此进行有 ...
- 浅谈 vue-loader---合格前端
什么是 vue-loader? vue-loader 是一个 webpack 的 loader,它允许你以一种名为单文件组件的格式撰写 Vue 组件. 如何使用? 1. 安装 npm install ...
- Node.js文档-模块
核心模块 Node为Javascript提供了很多服务器级别的API,绝大多数都被包装到了一个具名的核心模块中,例如文件操作的fs核心模块,http服务构建的http模块等,核心模块的使用必须通过re ...
- DC-8靶机渗透实战
前言: 本文将讲述通过信息收集,再web站点的sql注入漏洞加john爆破登录后台,然后找到远程代码执行漏洞getshell,最后用exim4命令提权漏洞进行权限提升拿到最终的flag. 0x00 环 ...
- IDEA 在debug模式下启动慢或者无法启动解决
参考:https://www.cnblogs.com/han-1034683568/p/8603588.html 背景 这两天在开发项目的时候发现用debug模式启动项目的时候,项目启动速度非常慢甚至 ...
- learn to rank 模型概述
模型总体描述: https://zhuanlan.zhihu.com/p/26539920 LambdaMART中Lambda计算以及RegressionTree训练: https://blog.cs ...
- 转行小白成长路-java篇
第五章:初始化与清理 前几章怎么看都没发现有什么逻辑顺序,感觉都是相互独立的,在讲述java语言构成的基本单位和规则.这个先放置一边. java中初始化有两层含义,其一是创建,二是赋值. 其本质也就是 ...
- Docke-ce 安装
Docker-ce 的安装 安装系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 添加docker镜像源 yum-con ...
- CF895C Square Subsets [线性基]
线性基的题- 考虑平方数只和拆解质因子的个数的奇偶性有关系 比如说你 \(4\) 和 \(16\) 的贡献都是一样的.因为 \(4 = 2^2 , 16 = 2^4\) \(2\) 和 \(4\) 奇 ...
- 选课系统项目_python
一.功能简要 基本实现以下功能,但是有部分地方由于时间关系并未写,而且并未做细微的完善,大致功能完成.角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , pyt ...