海量用户通讯系统-Redis 用户验证分析|学习笔记

简介: 快速学习海量用户通讯系统-Redis 用户验证分析

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:海量用户通讯系统-Redis 用户验证分析】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9807


海量用户通讯系统-Redis 用户验证分析

 

内容简介

一.Redis 适用类型

二.添加 Redis 用户

三.在服务器中表示用户信息

四.建立连接池

 

一.Redis 适用类型

在我们已经将服务器和客户端的结构进行合理的改进后,程序就可以进行更加复杂的业务逻辑。之前我们将用户名和密码明确的写了出来,这在实际开发中是不太可能的,所以我们需要做以下的工作。我们需要在redis里面验证用户名和密码是否正确,是否存在登录,否则会退出系统并给出相应的处理。针对这一步骤的代码量也会非常大。

 

二、添加 Redis 用户

image.png

首先需要在 Redis 手动添加测试用户,就是在数据库中明确存在的用户。在登录成功后,我们再完成真实的注册,这就需要我们增加一个Redis数据库。将用户信息存入Redis 中,怎样做才会比较合理呢?我们需要挑一种高效且 key 不能重复的数据结构,因此我们不能使用队列结构,只能使用 hash 结构。Users 是 hash 的名称,由它延伸出去。假设有一个100号用户信息存入,同时还有一个200号用户信息存入,在查找数据库中是否有这两名用户时,我们只需在 users 中进行查找。

 

三.在服务器中表示用户信息

显然,在数据库中是没有一种数据结构可以来描述用户信息的。我们在服务器中建立一个 model 数据,首先建立一个 user.go,先定义一个 user 结构体。这个结构体中包含哪些字段呢?至少包括用户的 ID,用户的密码。用户的名字。还可以加许多用户的性别电子邮件,包括他的好友等。现在迫切需要的只是他的ID、密码和用户名。

1. 然后建立一个数据库,访问对象user.dao.go,dao,data.,access,object都是数据访问对象。

2. 编写对 user 对象操作的各种方法,主要就是增删改查。

3. 在我们登录注册时,会发现各种各样的错误,因为错误种类会比较多,所以我们需要自定义错误,编写一些错误的信息。error. go是用户自定义的错误。

4. 如果user process要进行数据的交互,就是客户端与服务器端的交互,我们就会使用utils.操作。如果 user process 或 SMS process 与 Redis 之间进行数据交互,我们就会使用 dao 完成对数据库的操作。

 

四.建立连接池

既然要完成对 redis 的操作,我们就需要连接 redis。连接 redis 有两种方法,一是操作一次就连接一次,这种效率会比较低下。第二种方法就是事先初始化一些redis的连接词,当我们需要操作时,就让 userdao 去连接,操作后再回放回去,效率就会大大提高。因此,我们还需要建一个连接池。首先需要知道连接池是服务器的维护,让数据库与Red is的连接池建立关系。在操作时需要连接哪一项,就在这两项中建立一根连接,在使用完之后再将这根连接放回至连接池中,注意连接池是由Redis.go进行维护。

image.png

以上是 Redis 连接的示意图。

相关文章
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
670 5
|
存储 NoSQL Redis
Redis 新版本引入多线程的利弊分析
【10月更文挑战第16天】Redis 新版本引入多线程是一个具有挑战性和机遇的改变。虽然多线程带来了一些潜在的问题和挑战,但也为 Redis 提供了进一步提升性能和扩展能力的可能性。在实际应用中,我们需要根据具体的需求和场景,综合评估多线程的利弊,谨慎地选择和使用 Redis 的新版本。同时,Redis 开发者也需要不断努力,优化和完善多线程机制,以提供更加稳定、高效和可靠的 Redis 服务。
337 1
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
294 6
|
10月前
|
JSON NoSQL Redis
在Rocky9系统上安装并使用redis-dump和redis-load命令的指南
以上步骤是在Rocky9上使用redis-dump和redis-load命令顺利出行的秘籍。如果在实行的过程中,发现了新的冒险和挑战,那么就像一个勇敢的航海家,本着探索未知的决心,解决问题并前进。
321 14
|
9月前
|
机器学习/深度学习 数据采集 人机交互
springboot+redis互联网医院智能导诊系统源码,基于医疗大模型、知识图谱、人机交互方式实现
智能导诊系统基于医疗大模型、知识图谱与人机交互技术,解决患者“知症不知病”“挂错号”等问题。通过多模态交互(语音、文字、图片等)收集病情信息,结合医学知识图谱和深度推理,实现精准的科室推荐和分级诊疗引导。系统支持基于规则模板和数据模型两种开发原理:前者依赖人工设定症状-科室规则,后者通过机器学习或深度学习分析问诊数据。其特点包括快速病情收集、智能病症关联推理、最佳就医推荐、分级导流以及与院内平台联动,提升患者就诊效率和服务体验。技术架构采用 SpringBoot+Redis+MyBatis Plus+MySQL+RocketMQ,确保高效稳定运行。
656 0
|
12月前
|
存储 NoSQL Redis
投行系统的毫秒级榜单响应:如何用Redis ZSET破解同分排序难题?
通过Redis的ZSET数据结构和更新时间戳,解决投行交易系统实时排行榜中同分跳变的问题。具体方案为:将交易量作为整数部分,更新时间戳作为小数部分,确保同分时按最新更新排序,实现实时、高效、无需应用层干预的排行榜功能。一句话总结:通过Redis ZSET加更新时间戳,解决百万交易排行榜实时显示及同分难题。
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
1899 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
缓存 监控 NoSQL
Redis 缓存穿透的检测方法与分析
【10月更文挑战第23天】通过以上对 Redis 缓存穿透检测方法的深入探讨,我们对如何及时发现和处理这一问题有了更全面的认识。在实际应用中,我们需要综合运用多种检测手段,并结合业务场景和实际情况进行分析,以确保能够准确、及时地检测到缓存穿透现象,并采取有效的措施加以解决。同时,要不断优化和改进检测方法,提高检测的准确性和效率,为系统的稳定运行提供有力保障。
286 5
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
1554 3
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
244 3