博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
阅读量:5876 次
发布时间:2019-06-19

本文共 1643 字,大约阅读时间需要 5 分钟。

照例附上

本项目实现的是将一个简单的天气预报系统一步一步改造成一个SpringCloud微服务系统的过程,本节将介绍项目中Redis的引入。

若对Redis感兴趣,还可以看一下我的另一篇文章

存在问题:

数据来源于第三方的接口,依赖性太强。

可能带来的不良结果:

(1)延时性:用户访问我们的时候,我们需要再去访问第三方的接口,我们是数据的中间者,不是数据的产生者,有一定的延时性。

(2)访问上限:免费的接口,可能会达到上限。

(3)调死:可能将对方的接口给调死。

解决方案:

使用redis缓存系统,提高整体的并发访问能力。

Redis 是一个高性能的key-value数据库,基于内存的缓存系统,对内存的操作时非常快的,所以可以做到及时响应。

为什么选择Redis

(1)及时响应

(2)减少服务调用

Redis如何引入

Redis是一个key-value结构的数据存储系统,这里我们使用天气数据的uri作为它的key,通过ValueOperations<String, String>ops对象的set方法将数据写入缓存中,通过其get方法可以从缓存中获取数据,并且使用TIME_OUT设置缓存失效的时间。

我们并不是每次都去调用第三方的接口,若Redis缓存中有要查找的天气数据,则从缓存中取;若缓存中没有,则请求第三方接口,然后将数据写入Redis缓存中。

private WeatherResponse doGetWeahter(String uri) {        String key = uri;        String strBody = null;        ObjectMapper mapper = new ObjectMapper();        WeatherResponse resp = null;        ValueOperations
ops = stringRedisTemplate.opsForValue(); // 先查缓存,缓存有的取缓存中的数据 if (stringRedisTemplate.hasKey(key)) { logger.info("Redis has data"); strBody = ops.get(key); } else { logger.info("Redis don't has data"); // 缓存没有,再调用服务接口来获取 ResponseEntity
respString = restTemplate.getForEntity(uri, String.class); if (respString.getStatusCodeValue() == 200) { strBody = respString.getBody(); } // 数据写入缓存 ops.set(key, strBody, TIME_OUT, TimeUnit.SECONDS); } try { resp = mapper.readValue(strBody, WeatherResponse.class); } catch (IOException e) { //e.printStackTrace(); logger.error("Error!",e); } return resp; }

转载地址:http://inkix.baihongyu.com/

你可能感兴趣的文章
驯服 Tiger: 并发集合 超越 Map、Collection、List 和 Set
查看>>
Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现...
查看>>
Template Method Design Pattern in Java
查看>>
MVC输出字符串常用四个方式
查看>>
LeetCode – LRU Cache (Java)
查看>>
JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)...
查看>>
【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2
查看>>
nginx+php的使用
查看>>
在 ASP.NET MVC 中使用异步控制器
查看>>
SQL语句的执行过程
查看>>
Silverlight开发历程—动画(线性动画)
查看>>
详解Linux中Load average负载
查看>>
HTTP 协议 Cache-Control 头——性能啊~~~
查看>>
丢包补偿技术概述
查看>>
PHP遍历文件夹及子文件夹所有文件
查看>>
WinForm程序中两份mdf文件问题的解决
查看>>
【转】唯快不破:创业公司如何高效的进行产品研发管理
查看>>
Spark RDD、DataFrame原理及操作详解
查看>>
程序计数器、反汇编工具
查看>>
Android N: jack server failed
查看>>