文档章节

project day4

k
 klmkom
发布于 07/27 19:24
字数 805
阅读 1
收藏 0

目标:

(1)实现缓存逻辑。(Redis)

(2)完成搜索功能。(Solr)

缓存可以提高搜索效率,以下情况一般使用缓存

(1)查询频率较高的数据。

(2)修改频率较低的数据。

缓存逻辑实现:

1.添加缓存

需求:在REST接口中,给导航菜单、首页大广告位内容添加缓存。缓存逻辑在ego-rest工程中实现。

1.1.添加Redis的jar包

1.2.spring整合Redis集群

1.3.修改ContentServiceImpl类

@Service

public class ContentServiceImpl implements ContentService{

private String EGO_CONTENT = "EGO_CONTENT";

@Autowired

private JedisCluster jedisCluster;

@Autowired

private ContentMapper mapper;

/*

 * 缓存逻辑

 *    (1)首先查找缓存。

 *    (2)如果缓存有数据,则直接返回数据,不需要查询数据库

 *    (3)如果缓存中没有数据,则查询数据库。并且将数据放入缓存中。

 *    

 *    (4)缓存不能影响正常的业务执行,即当前缓存无法使用,则直接查询数据库

 *

 * 确定选用哪一个数据结构类型(string,list,set,hash

 * 选用数据结构类型的时候,有一个原则:能用hash尽量使用hash。原因:减少key的数量,在寻址的时候速度更快。

 *

 * {key:{field:value}}   

 * 我们这里使用hash数据结构类型,key定义成一个常量EGO_CONTENT   field就使用类型分类的id,value使用内容列表的json格式。

 *

 * 注意:hash结构只能存储string格式的数据

 *

 */

@Override

public EgoResult getContentByCatId(Long catId) {

List<Content> list = null;

try {

//1、查找缓存

String jsonData = jedisCluster.hget(EGO_CONTENT, catId+"");

if(null!=jsonData && !"".equals(jsonData)){

//缓存里面有数据,则直接返回数据即可

list = JsonUtils.jsonToList(jsonData, Content.class);

}else{

//如果缓存中查不到数据,则查询数据库

Map<String, Object> columnMap = new HashMap<>();

columnMap.put("category_id", catId);

list = mapper.selectByMap(columnMap);

//再将数据放入缓存中

jedisCluster.hset(EGO_CONTENT, catId+"", JsonUtils.objectToJson(list));

}

} catch (Exception e) {

e.printStackTrace();

//如果缓存中查不到数据,则查询数据库

Map<String, Object> columnMap = new HashMap<>();

columnMap.put("category_id", catId);

list = mapper.selectByMap(columnMap);

}

return EgoResult.ok(list);

}

}

1.4.测试

(1)重启rest工程

(2)访问portal工程首页。将缓存添加到redis中。

(3)再次访问portal工程首页。查看缓存是否生效。

缓存同步:修改、更新导航菜单、网站内容后,要同步修改缓存,或者清空对应的缓存。

2.系统架构

在本项目中,我们将搜索业务独立出来,创建搜索子系统。这样做,既能提高系统的拓展能力,也能灵活的对系统进行分布式部署。

实现思路:

(1)搭建搜索服务器。

(2)创建搜索系统。

(3)发布搜索服务的公共接口。

(4)在门户系统调用该接口,实现搜索。

3.搭建搜索服务器

3.1.配置solr服务器

3.1.1.解压一个新的Tomcat,专门用来加载Solr。

3.1.2.部署solr到Tomcat中

3.1.3.添加Tomcat依赖的jar包

3.1.4.创建SolrHome

3.1.5.配置SolrHome

3.1.6.修改web.xml加载SolrHome

3.1.7.启动Tomcat测试

访问地址   http://localhost:8080/solr

 

© 著作权归作者所有

上一篇: ActiveMQ总结
下一篇: project day3
k
粉丝 0
博文 16
码字总数 8409
作品 0
广州
私信 提问
单用户/救援模式、虚拟机克隆、Linux间互登录

本文索引 单用户模式 开关机命令 修改root密码 救援模式 准备 修改root密码 克隆虚拟机 操作步骤 修改参数 Linux机器间互相登录 --- 单用户模式 开关机命令 重启服务器 reboot init 6 shutdo...

Lu_Castiel
2017/10/18
13
0
《从零开始学Swift》学习笔记(Day4)——用Playground工具编写Swift

Swift 2.0学习笔记(Day4)——用Playground工具编写Swift 原创文章,欢迎转载。转载请注明:关东升的博客 Playground程序运行①区域是代码编写视图;②区域是运行结果视图;③区域是时间轴视...

智捷课堂
2015/08/24
368
0
【目录导航】JAVA零基础进阶之路

【JAVA零基础入门系列】(已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day6 Java字符串 Day7 Java输入与输出...

MFrank
2018/06/21
0
0
Python练习题(day4)

一、生成器练习:1、自定义函数模拟range(1,7,2)def my_range(start,stop,step=1):while start

西鼠
2018/01/02
0
0
思科协作 day4

SIP leverages various standards:RTP,RTCP,HTTP,SDP.DNS.SAP.MGCP,and RTSP UAC:User Agent Client UAS:User Agent Server SIP 信令的交互,类似H.225 SDP 媒体的交互,类似H.245 SIP终端常......

Grodd
2017/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Activity启动模式二

上篇文章Activity启动模式一主要介绍了Activity的四种启动模式,这些启动模式都是在AndroidManifest中进行配置的。除此之外,Android系统还通过Intent类提供了一些标志位,同样可以指定Activ...

ltlovezh
2分钟前
2
0
三原色还原

1、Color Filter Array — CFA 随着数码相机、手机的普及,CCD/CMOS 图像传感器近年来得到广泛的关注和应用。 图像传感器一般都采用一定的模式来采集图像数据,常用的有 BGR 模式和 CFA 模式...

天王盖地虎626
13分钟前
2
0
kubernetes pod exec接口调用

正文 一般生产环境上由于网络安全策略,大多数端口是不能为集群外部访问的。多个集群之间一般都是通过k8s的ApiServer组件提供的接口通信,如https://192.168.1.101:6443。所以在做云平台时,...

码农实战
50分钟前
6
0
3_数组

3_数组

行者终成事
今天
8
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部