redis一般缓存什么样数据_门户数据展示_Redis缓存数据
学习主题:门户数据展示_Redis缓存数据
一、Redis_3主3从集群环境搭建
谈单你对读写分离和主从同步的理解
读写分离:Master负责写数据的操作,salve负责读数据的操作
主从同步:salve是对master的备份,将数据写入到master中,会被同步到salve中
谈谈redis集群进行数据和slot映射的思想
整个redis集群将集群存储空间分为16384(0—16383)个slot(槽),
将16384个slot分散到集群中的每个服务器节点。
在集群存储数据的时候,首先进行CRC16算法,根据运算结果将key对应的执行保存到对应的slot。
二、创建门户ego-portal-web项目
描述ego-portal-web项目中需要的依赖
<dependencies><dependency><groupId>com.bjsxt.ego</groupId><artifactId>ego-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.bjsxt.ego</groupId><artifactId>ego-rpc-service</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- dubbo依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId></dependency> <!-- zookeeper客户端依赖 --><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId></dependency> <!-- spring依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId></dependency> <!-- JSP相关 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><scope>provided</scope></dependency> <!-- json到java对象的序列化和反序列化 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency></dependencies><build><plugins> <!-- 配置Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><path>/</path><port>8081</port></configuration></plugin></plugins></build>
描述ego-portal-web项目中web.xml配置内容
<?xml version= "1.0" encoding= "UTF-8" ?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"><display-name>ego-portal-web</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!-- <servlet-mapping><servlet-name>default</servlet-name><url-pattern>/favicon.ico</url-pattern></servlet-mapping> --><!-- 以监听器的方式启动spring容器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 指定spring的配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext-*.xml</param-value></context-param><!-- POST请求的乱码过滤器 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!-- 指定编码方式 --><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter> <!-- 映射filter --><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- springmvc的servlet --><servlet><servlet-name>ego-portal-web</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 指定springmvc的配置文件 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/springmvc.xml</param-value></init-param> <!-- 让springmvc随系统启动而启动 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>ego-portal-web</servlet-name><!-- 伪静态化,接收.html结尾的请求 --><url-pattern>*.html</url-pattern></servlet-mapping>
</web-app>
三、加载门户首页商品类目
描述加载首页商品类目的实现思路
把鼠标放到商品的类目分类时,后台会发送一个ajax请求,
查询数据库,将数据库中的数据响应回来为json字符串,
将字符串解析为json对象并将其响应到前端页面,
前端页面接收到数据后将商品类目加载出来
描述需要响应到前端的商品类的数据结构和规范
后台得到的是list集合,需要遍历list集合,
将其转换为符合前端规范的数据格式(json格式的字符串),
前台接收到json格式的字符串后,将其转换为json格式对象响应到浏览器端。
@Service
public class PortalItemCatServiceImpl implements PortalItemCatService {@Autowiredprivate ItemCatService itemCatServiceProxy;//加载前台首页的商品类目@Overridepublic String loadItemCatService() {List<TbItemCat> list = itemCatServiceProxy.loadItemCatListService();//创建CatResult对象CatResult result = new CatResult();//将list集合转换为符合前端规范数据格式,递归遍历listList<?> data = getChildren(0L, list);result.setData(data);//将result对象转换为json字符串String str = JsonUtils.objectToJson(result);return str;}private List<?> getChildren(Long parentId, List<TbItemCat> itemCats) {// 盛放指定分类下的所有子分类信息List resultList = new ArrayList();for (TbItemCat itemCat : itemCats) {if (itemCat.getParentId().equals(parentId)) {if (itemCat.getIsParent()) {// 如果itemCat代表一级分类或者二级分类CatNode catNode = new CatNode();if (itemCat.getParentId().longValue() == 0) {// 如果是一级分类 "<a href='/products/1.html'>图书、音像、电子书刊</a>",catNode.setName("<a href='/products/" + itemCat.getId() + ".html'>" + itemCat.getName() + "</a>");} else {// 如果是二级分类 "电子书刊",catNode.setName(itemCat.getName());}// "/products/2.html",catNode.setUrl("/products/" + itemCat.getId() + ".html");catNode.setList(getChildren(itemCat.getId(), itemCats));// 将节点添加到list集合中resultList.add(catNode);} else {// 如果itemCat表示三级分类 "/products/3.html|电子书",resultList.add("/products/" + itemCat.getId() + ".html|" + itemCat.getName());}}}return resultList;}
}
前端的数据格式规范
四、加载门户首页大广告
描述实现加载首页大广告的实现思路
根据内容类目的id到数据库中查询内容数据,
在提供端将查询到的数据封装到list集合中,在消费端调用远程服务,
将list集合中的数据转换成json格式的字符串发送到前台,
前台接收到字符串之后,将字符串转换成json格式的对象,
然后将json格式对象推送到浏览器端。
描述后端响应到前端的大广告数据格式
后端将list集合中的数据转换成json格式的字符串响应到前端,
前端将字符串转换成json格式的对象推送到浏览器。
五、实现商品类目_大广告缓存_缓存同步
描述实现缓存同步的思路
(1)如果redis缓存中没有数据,通过调用ego-rpc服务,查询数据库获得商品类目数据,
将ego-rpc返回的数据进行处理,保存到redis缓存,在返回到ego-portal-web进行展示
(1)如果redis缓存中有数据,直接将缓存中的数据返回给ego-rpc-web,不用调用ego-rpc服务查询数据库。
描述实现数据缓存的实现思路和缓存,数据库查询顺序
1.可以设置 key 的生命周期,定期的和数据库同步
2.当 ego-rpc 对数据库数据完成增删改的时候,清空 redis 中缓存的数据,
ego-portal-web,重新调用远程服务查询数据库获得数据,再次放入缓存中。
redis一般缓存什么样数据_门户数据展示_Redis缓存数据相关推荐
- Java_Hive自定义函数_UDF函数清洗数据_清洗出全国的省份数据
Java_Hive_UDF函数清洗数据_清洗出全国的省份数据 最近用Hadoop搞数据清洗,需要根据原始的地区数据清洗出对应的省份数据,当然我这里主要清洗的是内陆地区的数据,原始数据中不包含港澳台地区 ...
- 机器学习 处理不平衡数据_在机器学习中处理不平衡数据
机器学习 处理不平衡数据 As an ML engineer or data scientist, sometimes you inevitably find yourself in a situat ...
- 有效沟通的技能有哪些_如何有效地展示您的数据科学或软件工程技能
有效沟通的技能有哪些 What is the most important thing to do after you got your skills to be a data scientist? ...
- 云中数据_免费备份和共享云中数据的最佳网站
云中数据 We've been told many times how important backups are, although we may not realize it until it's ...
- cesium 3dtiles 加载本地数据_记一次Cesium地形数据生成过程
问题描述 有一小块带高程值的点状数据,需要根据该数据生成Cesium支持的3dtiles数据,在Cesium中显示.经过一周多时间的摸索,终于能够在Cesium中加载成功.现将数据处理流程做个记录,以 ...
- python使用elasticsearch维护数据_使用Python对ElasticSearch获取数据及操作
#!/usr/bin/env python#-*- coding: utf-8 -*- """@Time : 2018/7/4 @Author : LiuXueWen @ ...
- mysql如何防止插入重复数据_如何防止MySQL重复插入数据,这篇文章会告诉你
在MySQL进行数据插入操作时,总是会考虑是否会插入重复数据,之前的操作都是先根据主键或者唯一约束条件进行查询,有就进行更新没有就进行插入.代码反复效率低下. 新建表格 CREATETABLE`per ...
- oracle中join另一个表后会查询不出一些数据_面试必备 | 8个Hive数据仓工具面试题锦集!...
是新朋友吗?记得先点蓝字关注我哦- 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 数据分析 人工智能+Python | 人工智能+物联网 进入数据时代,大数据技术成为互联网发 ...
- kettle分批处理大表数据_采用Kettle分页处理大数据量抽取任务
需求: 将Oracle数据库中某张表历史数据导入MySQL的一张表里面. 源表(Oracle):table1 目标表(MySQL):table2 数据量:20,000,000 思路: 由于服务器内存资 ...
最新文章
- 详解使用DockerHub官方的mysql镜像生成容器
- 面试官:你知道哪几种事务失效的场景?
- 《Web前端开发修炼之道》-读书笔记CSS部分
- 可信知识实证在UGC时代情报应用中的思考与探索
- Flink的累加器(Accumulator)应用
- Visual Basic之父回忆往事
- mssql 动态行转列。
- erlang安装报错
- 常用的C语言函数介绍
- 导出DMP文件实现数据库备份、数据迁移流程
- 自助装机配置专家点评2
- 网易微专业大数据工程师
- 影视后期行业概述、制作流程、岗位划分、薪资待遇、课程介绍详解
- C语言程序结构的特点
- 分布式tensorflow测试代码
- 还想贪小便宜?建议你先了解一下物联卡收费标准!
- 根据GEOHASH,查找附近的人,判断距离远
- Java8 stream流式表达式用法
- Node.js 中 __dirname 和 ./ 的区别
- intellij idea 合并分支到主分支,主分支代码同步到某一分支