短链服务接口慢优化 redis应用

短链接服务:
1.长链接 查询 短链接(长链接如果存在,直接返回短链接,如果长链接不存在,则需要生成短链接),比如:在获取短信之前,或者管理后台编辑短信内容之前,需要根据长链接去获取短链接的。
2.短链接 查询 长链接,比如:在短信中点击短链,短链需要根据短链的Code去获取长链接,然后redirect跳转实现。

方案1:以上两处的查询,都需要考虑加上mongodb索引。可以将接口响应速度提高到毫秒内,之前需要2~3秒。
mongodb查询语句:
db.shortUrlTestMongoDB.find({"long_url":"https://长链接地址?orderNo=DINGDANHAO&memNo=HUIYUANHAO"})
db.shortUrlTestMongoDB.find({"code":"123564"})

方案2:在服务调用方处,加上redis缓存,可以理解为:每个订单号对应的短链CODE是不变的,没必要每次都是调用短链服务。
弊端:在首次调用初始化的时候会慢,其他的时候都是很快。

DEMO代码示例:

@Autowired
private StringRedisTemplate stringRedisTemplate; String redisShortUrl = "redisKeyTest:orderNo:";
//存入缓存当中
String redisKeyValue = stringRedisTemplate.opsForValue().get(redisShortUrl + orderNo);
if (StringUtils.isEmpty(redisKeyValue)) {
//调用短链服务获取短链Code
//返回该code,比如变量为:code,失效时间设置为30天
stringRedisTemplate.opsForValue().set(redisShortUrl + orderNo, code, 30, TimeUnit.DAYS);
} else {
//直接返回redisKeyValue(即code)
log.info("get from redis,redisKeyValue=[{}]",redisKeyValue);
}

谷歌浏览器F12查看接口的请求响应时间工具:打开谷歌浏览器 >> F12

短链服务接口慢优化 redis应用的更多相关文章

  1. 以短链服务为例,探讨免AppKey、免认证、Ajax跨域调用新浪微博API

    新浪微博的API官方提供了很多种调用方式,支持编程的,归根结底就是两种: 1.基于Oauth协议,使用Open API.(http://open.weibo.com/wiki/%E6%8E%88%E6 ...

  2. 服务接口API限流 Rate Limit 续

    一.前言 上一篇文章中粗浅的介绍使用Redis和基于令牌桶算法进行对服务接口API限流,本文介绍另一种算法---漏桶算法的应用.Nginx想必大家都有所了解是一个高性能的 HTTP 和反向代理服务器, ...

  3. 服务接口API限流 Rate Limit

    一.场景描述 很多做服务接口的人或多或少的遇到这样的场景,由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务应用系统. 也就是面对大流量时,如何进行流量控制? 服务接口的流量 ...

  4. Dubbo服务接口的设计原则

    1.接口粒度 1.1 服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤,否则将面临分布式事务问题,Dubbo暂未提供分布式事务支持.同时可以减少系统间的网络交互. 1.2 服务 ...

  5. ASP.NET WebApi服务接口如何防止重复请求实现HTTP幂等性

    一.背景描述与课程介绍 明人不说暗话,跟着阿笨一起玩WebApi.在我们平时开发项目中可能会出现下面这些情况; 1).由于用户误操作,多次点击网页表单提交按钮.由于网速等原因造成页面卡顿,用户重复刷新 ...

  6. java 服务接口API限流 Rate Limit

    一.场景描述 很多做服务接口的人或多或少的遇到这样的场景,由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务应用系统. 也就是面对大流量时,如何进行流量控制? 服务接口的流量 ...

  7. 第6章 服务模式 Service Interface(服务接口)

    Service Interface(服务接口) 上下文 您正在设计企业应用程序,并且需要能够通过网络使用其部分功能.此功能需要能够被各类系统使用,因此互操作性是设计的重要方面.除互操作性之外,可能还需 ...

  8. Dubbo入门到精通学习笔记(十):dubbo服务集群 、Dubbo分布式服务子系统的划分、Dubbo服务接口的设计原则

    文章目录 dubbo服务集群 Dubbo服务集群部署 Dubbo服务集群容错配置--集群容错模式 1.Failover Cluster 失败自动切换,当出现失败,重试其它服务器.`(缺省) 通常用于读 ...

  9. 微服务架构中的Redis

    了解如何将Redis与Spring Cloud和Spring Data一起使用以提供配置服务器,消息代理和数据库. Redis可以广泛用于微服务架构中.它可能是少数流行的软件解决方案之一,你的应用程序 ...

  10. MQ消息队列(2)—— Java消息服务接口(JMS)

    一.理解JMS   1.什么是JMS?         JMS即Java消息服务(Java Message Service)应用程序接口,API是一个消息服务的标准或者说是规范,允许应用程序组件基于J ...

随机推荐

  1. Oracle数据到MaxCompute乱码问题详解

    ​简介:集成Oracle数据到MaxCompute,乱码问题分析: 为什么,在oracle数据不乱码,集成到MaxCompute就乱码了? 问题在哪里? 1.1 乱码现象 DataWorks的数据离线 ...

  2. 重温设计模式之 Factory

    简介: 创建型模式的核心干将,工厂.简单工厂.抽象工厂,还记得清么,一文回顾和对比下. 作者 | 弥高来源 | 阿里技术公众号 前言 创建型模式的核心干将,工厂.简单工厂.抽象工厂,还记得清么,一文回 ...

  3. [PHP] Laravel 的 503 Service Unavailable 模板提示的来源

    当我们看到 Laravel 的 503 样式的模板时,是启用维护模式的时候的提示(php artisan down). 开启访问运行 php artisan up. Refer:Laravel 503 ...

  4. 2019-2-21-PowerShell-通过-WMI-获取补丁

    title author date CreateTime categories PowerShell 通过 WMI 获取补丁 lindexi 2019-02-21 20:39:51 +0800 201 ...

  5. vue下获得经纬度省市区

    1.根目录html文件引入 <!--引入百度 API,"ak=" 后面一串码是密钥,最好自己申请--> <script type="text/javas ...

  6. 都2024年了,你还不知道git worktree么?

    三年前 python 大佬吉多·范罗苏姆(为 Python 程序设计语言的最初设计者及主要架构师)才知道 git worktree ,我现在才知道,我觉得没啥丢人的. 应用场景 如果你正在 featu ...

  7. Ubuntu(Linux)虚拟机与主机共享文件夹hgfs文件普通用户不能访问问题

    参考文章: https://blog.csdn.net/weixin_42224577/article/details/108107554 在虚拟机中设置好添加共享文件后,普通用户并不能访问mnt文件 ...

  8. AnaTraf 网络万用表流量分析教程系列 | AnaTraf 网络万用表 B 站频道

    为了更好的向大家分享如何使用 AnaTraf 网络万用表进行网络流量分析.网络故障排除,AnaTraf 开通了 B 站频道. 在 B 站上,将以视频的形式向大家介绍如何使用 AnaTraf 网络万用表 ...

  9. shape-outside

    shape-outside定义一个由内容区域的外边缘封闭形成的形状 shape-outside 是一个非常实用的属性,可以实现一些比较复杂的文本环绕效果. shape-outside 的兼容性比较好, ...

  10. 用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能

    OA办公中,业务需要编辑word文档,需要插入另外word文档的功能. 怎么实现编辑word文档插入另外word文档呢? 2 实现方法 通过pageOffice实现简单的在线打开编辑word时, 通过 ...