企业开发珠玑-缓存

一、缓存实际把我们数据划分为静态和动态数据,直接影响数据库设计。这里的静是相对的,不是绝对静,请不要死脑筋。

这一点很容易理解,经常变化的数据不做缓存,相对静止数据做缓存

二、缓存影响我们的架构模式,影响我们的前端设计,增加我们的异步行为,让我们在编码中也动静分离。

1)局部刷新模式。经常用到的模式例子就是产品-库存,产品的描述部分是固定的,但是库存是不停的消耗补充的。协调到前端就是,打开产品页后,ajax异步不停的刷库存。诸如此类细节数据动态变更都使用此模式。

2)内存数据库模式。在编码中例子就是涉及一些静态数据的反复使用,如我们公司的产品分类很多,据此衍生出的优惠等计算需求很多,分类数据读进内存后就当内存数据库使用了,效率极高。常用的一级二级缓存也类似

3)动静分离。数据库设计结构优化

三、产生优势:减少数据库查询或者读写瓶颈,提高响应效率;减少网络带宽消耗;减少网络延迟,加快页面打开速度;降低服务器压力

时间: 2024-10-10 10:31:11

企业开发珠玑-缓存的相关文章

企业开发珠玑-化整为零,分而治之

一.这堆屁话不仅是为了应对企业复杂的业务需求和变化,复杂的代码变化,也是执行力的强有力技巧之一. 二.化整为零,分而治之.是指将大目标制定为脚下的每一步,这一步多大多宽,因人,因时而异 三.空壳测试.空壳测试这名词是自己发明的,可以发生在设计阶段,demo阶段,或编码的第一阶段.从架构和业务角度,对业务编码,服务器和组件的调用路径进行测试,保证调用关系是符合业务需求.符合设计的.企业开发有个难点就是各种开发组件和,工具,新旧系统混杂,发生多个系统交互的概率很大,出错的很难找问题出在那个环节.因此

企业开发珠玑-过度设计

一.过度设计一般起源于对需求太多的计划,预测和猜想.要知道"计划赶不上变化"是普遍真理.所以因时,因地制宜才是最重要的.用国外传过来的词就是"敏捷开发". ------顺便吐槽一下"敏捷开发","迭代开发","瀑布流"这些争论.挺扯淡,其实都是要看人员,资金,时间等各方面的条件,那些贬此扬彼都是为理论而理论,或者别有用心. 二.怎么规避过度设计?不管时敏捷还是瀑布,都要避免过度设计.说些个人经验,架构设计的

企业开发珠玑--给新手管理的建议

1)不要给小孩网络.小孩不控制自己的探索欲望,容易迷路 2)任务目标明确,给参考案例,不要发散,要收敛,谨遵守:copy-modify模式 3)菜鸟的问题十之八九是粗心大意导致.去解决这些充满幻想的粗心大意问题挺费时间的. 没有办法的解决办法就是从环境搭建到代码全部重来一遍,代码重写一边,api重新参考手册. 4)教会菜鸟debug,观察变化.走一步看一步,摸石头过河.菜鸟学不会不会的就准备苍蝇拍吧... 5)多让小孩起立会议发言.70,80,90差距大着呢. 6)管理放松,考核严格.催发内动力

企业开发珠玑-异步

一.目标:考虑使用一个工具之前,一定要深刻理解自己的目标是什么,要解决的问题是什么,是否有业务意义,或者商业价值.没目标做事就是瞎掰,没目标或者也是瞎掰. 二.场景之一:日志.偶尔会用到复杂的日志系统,日志要写很多地方,时间被拉长 三.场景之二:复杂的业务,但是可以并行.本人使用过的场景就是抓数据-->分析,数据抓取后,进行多角度的分析是可以并行的. 四.场景之三:某些技术场景.如我们公司的系统多系统对接,经常互发消息,发消息的前提就是对方系统是活着的,俗说的握手,偶尔系统故障,或者跨区域延迟高

企业开发珠玑-管理变化

易经中对易的解释:变易,简易之道,变化而又恒常.用初中课本马克思相关内容解释就是:世间的一切事物都是运动的.到我们软件中就是"需求是变化的".曾几何时,掷笔从容,恶骂客户,恶骂老板......再不济的,都背后唠叨过几句操蛋的需求变更.现在想想,骂是该骂,但骂的主题是错的.实际上不是客户要变,不是分析师分析不清楚需求,而是公司统筹管理出了问题. 既然变化不可避免,一是要多方面.多角度的思考发生变化的的风险应对措施,另外软件设计时就要考虑未来变化的可能性,不说上穷碧落下黄泉,千年等一回,至

第八章 企业项目开发--分布式缓存memcached

注意:本节代码基于<第七章 企业项目开发--本地缓存guava cache> 1.本地缓存的问题 本地缓存速度一开始高于分布式缓存,但是随着其缓存数量的增加,所占内存越来越大,系统运行内存越来越小,最后系统会被拖慢(这一点与第二点联系起来) 本地缓存存于本机,其缓存数量与大小受本机内存大小限制 本地缓存存于本机,其他机器的访问不到这样的缓存 解决方案:分布式缓存 Jboss cache:缓存还存于本机,但是会同步更新到其他机器(解决了第三个问题,解决不了第一和第二个问题),如果缓存机器数量很多

第九章 企业项目开发--分布式缓存Redis(1)

注意:本章代码将会建立在上一章的代码基础上,上一章链接<第八章 企业项目开发--分布式缓存memcached> 1.为什么用Redis 1.1.为什么用分布式缓存(或者说本地缓存存在的问题)? 见<第八章 企业项目开发--分布式缓存memcached> 1.2.有了memcached,为什么还要用redis? 见<第一章 常用的缓存技术> 2.代码实现 2.1.ssmm0 pom.xml 只在dev环境下添加了以下代码: <!-- redis:多台服务器支架用什么

企业项目开发--分布式缓存Redis

第九章 企业项目开发--分布式缓存Redis(1) 注意:本章代码将会建立在上一章的代码基础上,上一章链接<第八章 企业项目开发--分布式缓存memcached> 1.为什么用Redis 1.1.为什么用分布式缓存(或者说本地缓存存在的问题)? 见<第八章 企业项目开发--分布式缓存memcached> 1.2.有了memcached,为什么还要用redis? 见<第一章 常用的缓存技术> 2.代码实现 2.1.ssmm0 pom.xml 只在dev环境下添加了以下代码

第十章 企业项目开发--分布式缓存Redis(2)

注意:本章代码是在上一章的基础上进行添加修改,上一章链接<第九章 企业项目开发--分布式缓存Redis(1)> 上一章说了ShardedJedisPool的创建过程,以及redis五种数据结构的第一种String类型的常用缓存操作方法.下面说余下的四种: list(有序列表) set(无序集合) sorted set(有序集合) hash 1.ssmm0-cache 1.1.RedisListUtil(有序列表工具类) 1 package com.xxx.cache.redis; 2 3 im