数据类型-案例:按次结算的服务控制| 学习笔记

简介: 快速学习数据类型-案例:按次结算的服务控制

开发者学堂课程【Redis 入门到精通(基础篇)数据类型-案例:按次结算的服务控制】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/764/detail/13395


数据类型-案例:按次结算的服务控制

 

内容介绍

一、数据类型实践案例

二、Tips16

 

一、数据类型实践案例

业务场景

人工智能领域的语义识别与自动对话将是未来服务业机器人应答呼叫体系中的重要技术,百度自研用户评价语义识别服务,免费开放给企业试用,同时训练百度自己的模型。

现对试用用户的使用行为进行限速,限制每个用户每分钟最多发起10次调用五个类型都学习完了,做一个综合的分析,对于现在这个社会来说,人工智能发展较快,自然是别语言未来空间比较大,像现在的拟合机器人特别人性化,让机器人用自然语言处理数据,帮我们快速完成繁重的工作,现在很多公司都有这一类型的自然语言,我们可以去申请使用,然后有次数限制,做这样一个限制的管理服务控制。

这个控制服务就是我们向服务器发起调用,在规定次数是可以实现的,但是到达了指定次数就不会放行了,要做一个次数控制,很容易想到的就是计数器,可以实现,在加之前进行一个判断,判断是否超次数,从而决定是否放行。

image.png

解决方案
●设计计数器,记录调用次数,用于控制业务执行次数。以用户id作为 key,使用次数作为 value

●在调用前获取次数,判断是否超过限定次数
不超过次数的情况下,每次调用计数+1
业务调用失败,计数-1
●为计数器设置生命周期为指定周期,例如1秒/分钟,自动清空周期内使用次数

然后记录一个值,不停的加,不超过次数的情况下,每次调用计数+1,业务调用失败,计数-1,然后我们就需要设置一个生命周期,到达了一定次数就进行清空,这样就OK了,用这个方案就可以达到效果,我们就需要用这个id创建一个key,然后判断key不存在,进行一个加一操作,同时设定生命周期为60秒,如果下一次过来进行判断发现非空,那么就加一,反复操作后会变成10,这个时候再去调用,判断发现已经到达了10,那么就拒绝调用,终止掉,回答一个信息表明情况。

接下来进行操作,获取get 415,setex 415 60 1,第二次过来get 415,increase 415,然后一直获取重复,到达10之后,get 415,超过了使用次数,然后在到达了时间后,就会发现变成了nil,就可以反复走这个过程,这样就可以做这个通知了,这样方案就解决了。

image.png

解决方案改良
●取消最大值的判定,利用 incr 操作超过最大值抛出异常的形式替代每次判断是否大于最大值

●判断是否为 nil,
如果是,设置为 Max 次数
如果不是,计数+1
业务调用失败,计数-1

●遇到异常即+操作超过上限,视为使用达到上限

这里有一个问题,对于判断这个地方,每次判断,耗费了资源跟时间,我们在到达限制时再去取消,利用incr操作超过最大值抛出异常的形式替代每次判断是否大于最大值,然后到达了最大值会报错。

接下来,我们就使用最大值减去执行次数,生命周期不变,还是继续增加,到达了我们设定的最大值,就报错,然后这个时候,再进行判断是否ok。

然后get 415,setex 415 60 9223372036854775797,设定最大值,get 415,然后 incr,重复,到达十次,超范围,就会溢出,报错,然后此时判断,影响客户体验,免去了每次做判断的情况。

image.png


二、Tips16

Redis 应用于限时按次结算的服务控制。

相关文章
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
396 0
go 换源 国内源
go 换源 国内源
1530 0
|
SQL 关系型数据库 MySQL
经典SQL练习题(MySQL版)
选取了一些经典的SQL练习题,附上了代码和运行结果。
20549 1
WK
|
XML 移动开发 数据格式
Beautiful Soup支持哪些解析器
Beautiful Soup是一款强大的库,用于解析HTML和XML文档。它支持多种解析器,包括Python标准库中的`html.parser`、lxml的HTML和XML解析器以及html5lib。`html.parser`无需额外安装,但速度较慢;lxml则基于C语言,速度快且支持XPath;html5lib则完全支持HTML5标准,容错性好但速度较慢。用户可通过`features`参数指定解析器,选择最适合需求的解析器可提升效率与准确性。
WK
648 2
|
存储 测试技术 Linux
存储稳定性测试与数据一致性校验工具和系统
LBA tools are very useful for testing Storage stability and verifying DATA consistency, there are much better than FIO & vdbench's verifying functions.
1628 0
|
XML Java Android开发
Android 仿抖音直播滑动清屏,完美解决滑动冲突
Android 仿抖音直播滑动清屏,完美解决滑动冲突
|
开发工具 git
Idea(二) 解决IDEA卡顿问题及相关基本配置(转)
一、IDEA太卡顿,设置使用IDEA的内存 在IDEA的安装目录下的bin目录下: 打开设置: 将idea.exe.vmoptions文件内由-server-Xms128m-Xmx512m-XX:MaxPermSize=250m-XX:ReservedCodeCacheSize=150m-ea-Dsun.
2286 0
|
运维 Linux Shell
Linux系统之网卡子接口配置方法
Linux系统之网卡子接口配置方法
634 0
|
前端开发 搜索推荐 数据可视化
阿里低代码引擎 LowCodeEngine 正式开源!
低代码引擎是一款为低代码平台开发者提供的,具备强大扩展能力的低代码研发框架。
2937 0
阿里低代码引擎 LowCodeEngine 正式开源!
|
机器学习/深度学习 算法 测试技术
机器学习实战︱基于多层感知机模型和随机森林模型的某地房价预测
在现实生活中,除了分类问题外,也存在很多需要预测出具体值的回归问题,例如年龄预测、房价预测、股价预测等。相比分类问题而言,回归问题输出类型为一个连续值,如下表所示为两者的区别。在本文中,将完成房价预测这一回归问题。
923 0
机器学习实战︱基于多层感知机模型和随机森林模型的某地房价预测