关于缓存的一些问题!请大牛指点!

现在给的模式是这样,在高并发的情况下,使用缓存减少对数据库的交互,从而提高速度。

那就是在数据库中读取一些常用的数据作为缓存,放到相关的服务器中。用户操作的数据以缓存中的数据为主,数据库只作为辅助作用。

问题:

什么时候缓存数据:(答不上来)

缓存一般存什么数据:存一些在特定的时间点不改变的,使用率高的数据

存多久:看数据的类型而定,不怎么改变的or改变频率高的

什么样的数据需要存入数据库中:(答不上来)

缓存与数据库交互的时机:在缓存框架中使用监听器(满足你指定的条件,如缓存达到了多少G...)

清理缓存的时机:定期对缓存中的数据进行采样,清理掉一些不常用的数据

使用此模式的优缺点:

优点:减少对数据库的交互,获取数据的速度快
    缺点:服务器宕机则缓存数据丢失-----------备份缓存数据则提高成本

以上的问题,回答都是自己整理的,肯定有不足之处或者是错的地方,还有一些答不上来,希望知道的大牛能不吝赐教!谢谢!

评论内容:

评论1:

如果系统并发量很大,并且数据库已经到了瓶颈了,可以考虑缓存。

关于缓存存多久,应该跟业务逻辑结合,有些数据不经常变,可以存很长时间,有些相对来说变动频繁的,可以存时间短一些。

而有些数据是不能缓存的,例如,用户支付信息,涉及到钱相关的,都不能缓存。

如果使用Memcached或Redis的话,这种缓存系统是可以把数据定期缓存到文件系统,就算宕机重启,也可以一定程度上恢复之前的缓存数据。

  •  评论2:

    根据自己的构架对每一个分层的数据中,那些相对不会经常变动,或者可以允许变动有一定滞后性的数据,进行缓存,还要提供清除cache的接口,根据不同的业务提供不同的缓存时间。

  • 1. 收到请求,先查询缓存,查询不到,查询磁盘(MYSQL等数据库),查询出来,把数据放入缓存,便于下一次请求使用

    2. 缓存预热,对于比较变化小,查询量大的数据,可以服务启动前把数据先 load 到 cache,名为预热

    3. 对于 MC(memcached)尽量使用一致性 hash 算法,避免MC服务器down机,缓存大面积的失效。

    4. 使用缓存集群,缓存分布在多个服务器上,增加可用性

  • 我做过一次缓存,是仿照hibernate的,是按照SQL的解析和查出的值保存在缓存中的,用LRU算法,当出现更新,删除的操作时,就清空缓存。你说的存一些在特定的时间点不改变的,使用率高的数据,其实表达的是二级缓存,缓存也有一级和二级的区分。

时间: 2024-12-11 16:40:43

关于缓存的一些问题!请大牛指点!的相关文章

我想用 QGraphicsView 做一个编辑器,请高人指点一二!

我想用QGraphicsView做一个编辑器,请高人指点一二! 我想用QGraphicsView做一个编辑器,可以编辑文本,图片,控件等等. 问题:1. 怎么在QGraphicsView显示出可用键盘控制的一闪一闪的文本光标? 2. 可以编辑文本,图片,控件的编辑器怎样做最简单? 3. 本来文本编辑QTextEdit可以的,可是不知道怎么加入带脚本的按钮等控件到编辑框中?

Python大牛指点新手之:掌握这5点,可以快速从入门到进阶!

Python是一种完全开放源码的语言,代码可以随意读取给任何人.这种方法可以帮助人们找到更好.简洁和简洁的代码,并在许多方面节省不必要的时间,因为它适合直接应用或简化.经常看的好源码,不仅能让你学习别人的编程方法,还能大大帮助你更好的学习另一方面.创一个小群,供大家学习交流聊天如果有对学python方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学python能够持之以恒python爱好群,如果你想要学好python最好加入一个组织,这样大家学习的话就比较

13、C#简易版 推箱子游戏(请高手指点)

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 推箱子2._0 { class Program { static void Main(string[] args) { #region//1 int y = 5, x = 5; string[,] a = new string[10, 11]{ {

关于今天的一次断网,请高手指点问题在那

今天公司的网突然全部中断,连忙跑到机房,首先看路由器,没问题,交换机没问题,因为这个店的网络不是我布的所以不知道网线的路径,就慢慢的找起来,首先是做基本拓扑图,外网--交换机1---内网  路由器---交换机1--交换机2--交换机3  LIUNX服务器----交换机1----VPN,开始以为是网络风暴,一到机房就重启的机器(经验之选,以前大部分这样的问题就是这样解决的),这次没效果!!又开始找线,可怜的我只能一根根测试它们的去向,(没有寻线仪,苦啊!)最终确定了,外面收银线和2个办公区的线然后

内网渗透+基础+工具使用=自己理解

目录 1.代理 2.内网命令 3.抓密码 4.ipc$共享目录利用 5.端口漏洞 6.溢出 1.代理 端口转发工具有很多比如:rebind2  eDuh  ssock  reDuh  lcx  socks5 等--.. 下面介绍我比较喜欢的2款工具LCX+ socks5 1.lcx 路由器加端口 TCP协议 ,固定IP地址本机 大马设置 Local Ip : 转发ip Local Port : 转发端口 Remote Ip :本机ip (ip138.com外网ip) Remote Port :

React.js 基础入门三 ---组件状态state

React 组件实例在渲染的时候创建.这些实例在接下来的渲染中被重复使用,可以在组件方法中通过 this 访问.唯一一种在 React 之外获取 React 组件实例句柄的方式就是保存React.render 的返回值.在其它组件内,可以使用 refs 得到相同的结果(后面会简单解释refs). 从上几章的学习,我们可以这么理解组件,学过php的Yii框架的都知道widget组件,react.js定义一个组件,通过在组件中定义各种'方法','属性'最后通过render来渲染这个组件. 其中<组建

“千”第二周学习情况

由于条件限制,每月流量有限,所以这周没有在MOOC网上继续学习相关大学计算机专业的课程,只好重新将javaweb从数据库连接那里继续向后学习,也算是对前一段时间学习的检验吧,这次将javaweb的一些相关基础重新温习了一边,搞懂了很多当时一知半解的或者糊里糊涂的知识,比如真正了解了MVC设计思想,javaweb经典三层架构各个层面的任务及如何运用. 一.重温了数据库连接的相关知识,掌握两种数据源,用以连接数据库Mysql,由于tomcat内置的dbcp数据源配置和使用比较麻烦,我只是了解了一下,

队列(queue) 之 c++模板实现(友元函数和运算符重载)

一:起因 (0)拿出自己年初实现的queue队列,第一次用c++类实现queue,在和如今实现的其他复杂的STL对比,心情无比复杂: 注释:看到听到当年自己的所写所想,正的是一种享受 -- 倾听自己的幼稚也是一种美. (1)闲话少说了,我自己现在回答自己的 三 (5) 中提到的问题,函数的返回值是用bool型还是void型??其实函数返回值是bool 还是 void是视情况而定的:例如,判空函数bool isEmpty(),比较运算符重载函数 bool operator >=(&)等判断函数

小谈截断上传漏洞

0x00 前言 小菜今天在测试网站的时候,发现存在上传点,于是尝试各种姿势,环境为iis7.5,于是乎来一个解析漏洞,发现并不可以,最终百度乎,发现上传有很多种利用方法,所以小菜就去学习了一下截断上传,搜集了很多资料,做一下总结,大牛完全可以飘过,基础文章. 0x01  截断原理      首先科普一下,网上说的介绍都有神马0x00,%00,/00之类的截断,看的小菜我晕乎乎的,其实看完才知道,原来都是一样的,只是不同表示而已,截断的核心在于chr(0)这个字符,这个函数表示返回以数值表达式值为