今天带你了解-分布式缓存(一)

article/2025/9/21 22:39:07

在网站架构的衍化历程中,当网站遇到性能瓶颈时,首先想到的解决方案就是使用缓存。

缓存指将数据存储在较高访问速度的存储介质中,以供系统处理。一方面缓存访问速度快,可以减少数据的访问时间,另一方面如果缓存的数据是经过计算处理得到的,那么被缓存的数据无需重复计算就可以直接使用,因此缓存还起到减少计算时间的作用。

缓存的本质是一个内存Hash表,数据缓存以一对key,Value的形式存储在内存Hash表中。

缓存主要用来存放那些读写比较高,很少变化的数据,如商品的类目信息,热门词的搜索列表信息,热门商品信息等。应用程序在读取数据时,先到缓存中读取,如果读取不到或数据已经失效,再访问数据库,并将数据写入缓存。

什么是分布式缓存(Distribute Cache)

指将缓存部署在多个服务器组成的集群中,以集群方数提供缓存服务,在分布式环境或系统下,把一些热门数据存储到离用户近,离应用近的位置,并尽量存储到更快的设备以减少远程数据传输的延迟。

e68b21c9d33c4629944cbddebfa43d87.jpeg

 分布式缓存常用的两种缓存技术服务端特点

Memcached

Memcashed曾一度是网站分布式缓存的代名词,被大量网站使用。其简单的设计,优异的性能,互不通信的服务集群,海量数据可伸缩的架构令网站架构师们趋之若鹜。其采用的是一种集中式的缓存集群管理,也被称为互不通信的架构方法,缓存与应用分离,缓存系统部署在一组专门的服务器上,应用程序通过一致性hash等路由算法选择缓存服务器,远程访问缓存数据,缓存服务器之间不通信,缓存集群的规模可以很容易地实现扩容,具有良好的可伸缩性。

Redis服务端

Redis是一个开源的使用ANSI C语言编写,支持网络。可基于内存亦可持久化的日志型key-value数据库,并提供多种语言的API。

其特点是

1)内存数据库 完全基于内存,绝大部分请求是纯粹的内存操作,非常快。

2)单线程 意味着它不需要处理线程间的通信问题,不需要频繁切换上下文。

3)采用io多路复用模型

IO多路复用模型是建立在内核提供的多路分离函数select基础之上的,系统首先将需要进行IO操作的socket添加到select中,然后select会帮我们监听每个注册的io流的状态。当有数据到达时,对应的socket被激活,用户线程读取数据并且继续执行

以上三点决定了redis是非常快的,redis的读速度达到了11w/s,写速度达到8w/s。

Redis相对于MemCash的优势

1)支持快照和持久化

MemCash是将数据存在内存中,但是一旦遇到服务器重启或宕机,所有的数据都会消失,因为内存中的数据无法持久化,相对的

Redis则支持数据的快照和持久化,即使在服务器重启后也可以通过在硬盘中的快照文件,实现数据恢复。

2)支持Master-Slave主从复制

如果MemCash的服务全部挂掉了,所有的请求瞬间会涌向数据库,导致数据库宕机,而Redis则支持Master-Slave主从复制。当主节点出现问题可以从子节点提供服务,实现快速的故障恢复,而且其主节点提供写服务,子节点提供读服务,可大大提高Redis服务的并发量。

3)支持更加丰富的数据类型

redis可以完全实现memcache的功能,并且它还提供了额外的一些操作,例如:获取字符串长度,往字符串append内容 等等一些操作。

之前说过,缓存本质是一个内存Hash表,而Redis天然支持Hash结构,即每次可以只更新Hash表中的某一属性。内容 等等一些操作

而在memcaceh中,因为只支持string存储,所以对于结构化的信息例如用户信息,即使需要更改某一个属性的数据,也需要在存入的时候对整个用户信息执行一次序列化操作,而取出的时候进行一次反序列化操作,这样对于性能来说是非常不友好的。

 

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/LRYBNgqY.shtml

相关文章

深入浅出分布式系统中的缓存架构

缓存,已经是一个老生常谈的技术了,在高并发读的情况下对于读服务来说可谓是抗流量的银弹。 高并发三大利器:缓存、限流、降级。 今天我们就来谈谈缓存。对于缓存,我的理解是让数据更接近于用户,目的是让用户的访问速…

分布式缓存灵魂十连,你能坚持几个?

点击上方蓝色“方志朋”,选择“设为星标” 回复“666”获取独家整理的学习资料! 目录 前言 目前工作中用到的分布式缓存技术有redis和memcached两种,缓存的目的是为了在高并发系统中有效降低DB的压力,但是在使用的时候可能会因为缓…

Webform 常用控件

Webform 常用控件 一,简单控件 1,Lable——标签:在网页中呈现出来的时候会变成span标签 属性:Text——标签上的文字 BackColor,ForeColor——背景色,前景色 Font——字体 Bold-加粗 Italic-倾斜 Under…

Web窗体(WebForm)

一.简介 0. 页面的生命周期。 1. WebForm后台页面类继承于Page类,Page类实现了IHttpHandler接口。 2. 前台页面类继承于后台页面类。 3. 先调用PageLoad方法,再调用Render方法生成html代码。 二. 加密安全 互联网没有绝对的安全,登…

ASP.NET Web Form学习

ASP.NET Web Form学习 0.aspx与html 它如何工作? 从根本上讲,ASP.NET 页面与 HTML 完全相同。 HTML 页面的扩展名是 .htm 或 .html。假如浏览器从服务器请求某张 HTML 页面,服务器不进行任何修改,就会把该页面发往浏览器。 A…

forms.Form和forms.ModelForm

forms.ModelForm是forms.Form的升级版 forms.Form验证规则 2.1 forms.py 2.2 view.py 把我们写的UserResetForm导入到view.py 2.3 模板 forms.ModelForm验证规则 3.1 models.py 3.2 forms.py就用上面模型类里面的验证规则 3.3 view.py 3.4 模板看你实际的情况 forms.…

WebForm与MVC混用

在现有的WebForm项目中加入MVC,可以吗? 西蒙说,可以。 怎么加呢? 我的开发环境是:WIN7 IIS7.5 VS2012 一、WebForm项目添加引用: 我都是选了最高的版本。 二、将MVC项目的部分文件拷贝到WEBFORM项目 …

ASP.NET WebForm+Vue.js

QQ:285679784 欢迎加入博主CSDN资源QQ群799473954(附加信息:CSDN博客)一起学习 ! 参考原文:https://blog.csdn.net/myppbird/article/details/85598154 Vue.js教程:http://www.runoob.com/vue2/vue-tutorial.html Vue.js Ajax…

解析ASP.NET WebForm和Mvc开发的区别

因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解。自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大。在很多问题都是不清楚的情况下,问周围的人,别人也只是给自己讲一个大概。而且前两天因为问了一个比较…

C#-WebForm-WebForm开发基础

1、C/S  客户端应用程序 WinForm  WPF  平级 数据是存放在其他的电脑上或服务器上 需要从服务器上下载相应的数据,在本地电脑上的客户端里进行加工 数据的加工是在用户的电脑上执行的,会对用户的电脑配置有所要求 2、B/S  网页端应用程序 ASP.NE…

ASP.NET--WebForm框架

WebForm框架 WebForm是微软推出的一款为了吸引更多的其他开发者能够快速入门到.NET技术中的一个框架,让开发人员感觉使用.NET技术进行BS开发和使用.NET技术进行CS开发一样简单快速。 微软的想法:以后程序员开发网站项目不需要先学习HTML+CSS就能够直接入门BS,因此将HTML标…

ASP.NET(二)--WebForm框架

WebForm框架 WebForm框架WebForm介绍WebForm窗体框架事件驱动开发简单应用ASP.NET程序开发过程网页生成过程的分析案例 WebForm框架 WebForm是微软推出的一款为了吸引更多的其他开发者能够快速入门到.NET技术中的一个框架,让开发人员感觉使用.NET技术进行BS开发和使…

winform webform 简单高效的UI界面框架

一、winform的界面框架设计( james_lx) 一直以来,我都在寻找WINFORM程序,简单高效的UI界面框架,终于,我领悟了。在此分享给和我一样使用C#而苦于界面设计的人。我的发现中,并没有加入什么其它的…

WebForm 基础学习

C/S 客户端应用程序(Client/Server) 客户端——服务器端 两种技术 WinForm WPF -- WPF开发于WinForm之后, --GUI 图形用户界面(采用图形方式显示的计…

c#webform制作网页应用的思路login登录

一方面是有实际工作需要,一方面是想学点东西,制作一个webform的信息科工单登记查询网页,虽然目前还是很多bug,虽然代码基本都是复制的,但是慢慢的搭建成型。自己记录下思路,纯小白,可以说基本都…

<form>表单

1.form表单 <form>标签是表单是一个框架&#xff0c;其中主要包含<input>,<textarea>,<select>标签 1.1<input>标签 <input>标签首先是一个单标签 <input>标签的格式是<input type"" value"" name"&…

表单<form>

创建表单 <form> 标签用于创建供用户输入的 HTML 表单。 <form>标签的action属性的值指定了表单提交到服务器的地址。 <form> 元素包含一个或多个如下的表单元素&#xff1a; <input> <textarea> <button> <select> <option&g…

ASP.NET WebForm--简介

文章目录 ASP.NETASP.NET 模型HTTP请求处理过程HttpHandler ASP.NET ASP.NET基于.NET Framework的Web开发平台&#xff0c;不但吸收了ASP以前版本的最大优点并参照Java、VB语言的开发优势加入了许多新的特色&#xff0c;同时也修正了以前的ASP版本的运行错误。 ASP.NET就是属于…

WebForm

什么是ASP.NET ASP.NET指的是动态服务器页面(Active Server Pages),运行在IIS&#xff08;Internet Information Service)上&#xff0c;文件类似于HTML,后缀为.aspx. Classic ASP的局限性&#xff1a; 代码块必须放置在需要进行输出的位置 <html> <body style&qu…

ASP.NET(一)--WebForm简单介绍

WebForm B/S程序 浏览器服务应用程序&#xff0c;直接可以解释为网站类应用程序 静态网页与服务器技术 静态网页 以.html或以.htm为后缀的网页文件只能单纯的显示文本和图像无法和用户进行数据交互&#xff0c;无法根据用户的请求显示不同的网页内容(也就是无法和后台数据库…