96SEO 2026-02-23 11:33 21
缓存是为了调节速度不一致的两个或多个不同的物质的速度在中间对速度较慢的一方起到加速作用比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据内存是保存CPU经常访问硬盘的数据而且硬盘也有大小不一的缓存甚至是物理服务器的raid

访问硬盘数据的目的因为CPU的速度太快了CPU需要的数据由于硬盘往往不能在短时间内满足CPU的需求因此CPU缓存、内存、Raid
卡缓存以及硬盘缓存就在一定程度上满足了CPU的数据需求即CPU
缓冲也叫写缓冲一般用于写操作可以将数据先写入内存再写入磁盘buffer
一般用于写缓冲用于解决不同介质的速度不一致的缓冲先将数据临时写入到里自己最近的地方以提高写入速度CPU会把数据先写到内存的磁盘缓冲区然后就认为数据已经写入完成看然后由内核在后续的时间在写入磁盘所以服务器突然断电会丢失内存中的部分数据cache
缓存也叫读缓存一般用于读操作CPU读文件从内存读如果内存没有就先从硬盘读到内存再读到CPU将需要频繁读取的数据放在里自己最近的缓存区域下次读取的时候即可快速读取
用户层浏览器DNS缓存,应用程序DNS缓存,操作系统DNS缓存客户端代理层CDN,反向代理缓存Web层Web服务器缓存应用层页面静态化数据层分布式缓存,数据库系统层操作系统cache物理层磁盘cache,
浏览器的DNS缓存默认为60秒即60秒之内在访问同一个域名就不在进行DNS解析。
Nginx、PHP等web服务可以设置应用缓存以加速响应用户请求另外有些解释性语言比如PHP/Python/Java不能直接运行需要先编译成字节码但字节码需要解释器解释为机器码之后才能执行因此字节码也是一种缓存有时候还会出现程序代码上线后字节码没有更新的现象。
所以一般上线新版前,需要先将应用缓存清理,再上线新版。
另外可以利用动态页面静态化技术,加速访问,比如:将访问数据库的数据的动态页面,提前用程序生成静态页面文件html
CPU缓存L1的数据缓存和L1的指令缓存、二级缓存、三级缓存磁盘缓存Disk
关系型数据库是一个结构化的数据库创建在关系模型(二维表格模型)基础上一般面向于记录SQL语句标准数据查询语言就是一种基于关系型数据库的语言用于执行对关系型数据库中数据的检索和操作主流的关系型数据库包括Oracle、
以上数据库在使用的时候必须先建库建表设计表结构然后存储数据的时候按表结构去存如果数据与表结构不匹配就会存储失败
NoSQLNoSQLNotonlysQL意思是“不仅仅是SQL是非关系型数据库的总称。
除了主流的关系型数据库外的数据库都认为是非关系型。
不需要预先建库建表定义数据存储表结构每条记录可以有不同的数据类型和字段个数(比如微信群聊里的文字、图片、视频、音乐等)。
主流的NOSQL
Hbase分布式非关系型数据库大数据使用、Memcached、ElasticSearch简称ES索引型数据库、TSDB时续型数据库
关系型数据天然就是表格式的因此存储在数据表的行和列中。
数据表可以彼此关联协作存储也很容易提取数据与其相反非关系型数据不适合存储在数据表的行和列中而是大块组合在一起。
非关系型数据通常存储在数据集中就像文档、键值对或者图结构。
你的数据及其特性是选择数据存储和提取方式的首要影响因素。
很容易切换数据类型一个数据集当中有多种数据类型
SQL和NoSQL数据库最大的差别可能是在扩展方式上要支持日益增长的需求当然要扩展。
要支持更多并发量SQL数据库是纵向扩展也就是说提高处理能力使用速度更快速的计算机这样处理相同的数据集就更快了。
因为数据存储在关系表中操作的性能瓶颈可能涉及很多个表这都需要通过提高计算机性能来克服。
虽然SQI数据库有很大打展空间但最终肯定会达到纵向扩展的上限。
数据一般存储在本地的文件系统中。
读可以通过读写分离、负载均衡来分摊性能但读写仍然很消耗IO性能而NoSQL数据库是横向扩展的。
因为非关系型数据存储天然就是分布式的NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
数据分布存储在不同服务器上可以并发地读写加快效率横向扩展加服务器。
比较便宜纵向扩展提高硬件配置比如换更高性能的CPU、加CPU核数、硬盘、磁盘IO、内存条。
除硬盘外其他需要停机才能加
如果数据操作需要高事务性或者复杂数据查询需要控制执行计划那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。
SQL数据库支持对事务原子性细粒度控制并且易于回滚事务虽然NoSQL数据库也可以使用事务操作但稳定性方面没法和关系型数据库比较所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面非关系型数据库在事务的处理和稳定性方面不如关系型数据库。
但读写性能好、易于扩展处理大数据方面占优势
关系型数据库特别适合高事务性要求和需要控制执行计划的任务事务细粒度控制更好
非关系型数据库事务控制会稍显弱势其价值点在于高扩展性和大数据量处理方面
对数据库高并发读写需求Hugestorage——对海量数据高效存储与访问需求HighScalabilityHighAvailability——对数据库高可扩展性与高可用性需求
关系型数据库和非关系型数据库都有各自的特点与应用场景两者的紧密结合将会给web2.0的数据库发展带来新的思路。
让关系型数据库关注在关系上和对数据的一致性保障非关系型数据库关注在存储和高效率上。
例如在读写分离的MySQI数据库环境中可以把经常访问的数据即高热数据存储在非关系型数据库中提升访问速度。
实例--数据库--表(table)--记录行(row)、数据字段(column)
--键值对(key-value)非关系型数据库不需要手动建数据库和集合(表)。
Redis是一个开源、基于内存、使用C语言编写的key-value数据库并提供了多种语言的API。
它的数据结构十分丰富主要可以用于数据库、缓存、分布式锁、消息队列等...
Redis服务器程序是单进程模型也就是在一台服务器上可以同时启动多个Redis进程Redis的实际处理速度则是完全依靠于主进程的执行效率
若在服务器上只运行一个Redis进程当多个客户端同时访问时服务器的处理能力是会有一定程度的下降若在同一台服务器上开启多个Redis进程Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力
基础数据类型包括string字符串、list列表双向链表、hash散列键值对集合、set集合不重复和sorted
结构类型结构存储的值结构的读写能力String可以是字符串、整数、浮点数对整个字符串或者字符串的其中一部分进行操作对整数和浮点数执行自增或者自减操作list一个链表链表上每个节点都包含了一个字符串从链表的两端推入或者弹出元素根据偏移量对链表进行修剪读取单个或多个元素根据值查找或者移除元素set包含字符串的无序收集器并且被包含的每个字符串都是独一无二各不相同的添加、获取、移除单个元素检查一个元素是否存在与集合中计算交集、并集、差集从集合里面随机获取元素hash包含键值对的无序散列表添加、获取、移除单个键值对获取所有键值对zset字符串成员与浮点数分值之间的有序映射元素的排列顺序由分值的大小决定添加、获取、删除单个元素根据分值范围或者成员来获取元素
可以将内存中的数据保存在磁盘中重启的时候可以再次加载进行使用。
缓存和数据库双写一致性问题缓存雪崩问题缓存击穿问题缓存的并发竞争问题
Redis作为基于内存运行的数据库是一个高性能的缓存一般应用在session缓存、
队列、排行榜、计数器、最近最热文章、最近最热评论、发布订阅等Redis适用于数据实时性要求高、数据存储有过期和淘汰特征的、不需要持久化或者只需要保证弱一致性、逻辑简单的场景
首先要明确的是Redis单线程指的是网络IO和键值对读写是由一个线程来完成的但Redis持久化、集群数据等是由额外的线程执行的。
了解Redis使用单线程之前可以先了解一下多线程的开销。
通常情况下使用多线程可以增加系统吞吐率或者可以增加系统扩展性但多线程通常会存在同时访问某些共享资源为了保证访问共享资源的正确性就需要有额外的机制进行保证这个机制首先会带来一定的开销。
其实对于多线程并发访问的控制一直是一个难点问题如果没有精细的设计比如说只是简单地采用一个粗粒度互斥锁就会出现不理想的结果。
即使增加了线程大部分线程也在等待获取访问共享资源的互斥锁并行变串行系统吞吐率并没有随着线程的增加而增加
值得注意的是在Redis6.0中引入了多线程。
在Redis6.0之前从网络IO处理到实际的读写命令处理都是由单个线程完成的但随着网络硬件的性能提升Redis的性能瓶颈有可能会出现在网络IO的处理上也就是说单个主线程处理网络请求的速度跟不上底层网络硬件的速度。
针对此问题Redis采用多个IO线程来处理网络请求提高网络请求处理的并行度但多IO线程只用于处理网络请求对于读写命令Redis仍然使用单线程处理
Redis是基于内存的绝大部分请求都是内存操作十分的迅速Redis具有高效的底层数据结构为优化内存对每种类型基本都有两种底层实现方式
主要执行过程是单线程避免了不必要的上下文切换和资源竞争不存在多线程导致的CPU切换和锁的问题。
IO多路复用机制使其在网络IO操作中能并发处理大量的客户端请求从而实现高吞吐率。
IO多路复用机制是指一个线程处理多个IO流也就是常说的select/epoll机制。
在Redis运行单线程的情况下该机制允许内核中同时存在多个监听套接字和已连接套接字。
内核会一直监听这些套接字上的连接请求或数据请求。
一旦有请求到达就会交给Redis线程处理这就实现了一个Redis线程处理多个IO流的效果进而提升并发性。
比较的种类MemcachedRedis类型Key-value数据库Key-value数据库过期策略支持支持数据类型单一数据类型五大数据类型持久化不支持支持主从复制不支持支持虚拟内存不支持支持
----------------------------------------
/usr/local/redis/{conf,log,data}cp
/usr/local/redis/conf/redis.conf
#111行将本机访问保护模式设置no。
如果开启了那么在没有设定bind
/usr/local/redis/log/redis_6379.pid
/usr/local/redis/log/redis_6379.log
/usr/lib/systemd/system/redis-server.service
PIDFile/usr/local/redis/log/redis_6379.pid
ExecStart/usr/local/redis/bin/redis-server
/usr/local/redis/conf/redis.conf
工具作用redis-server用于启动redis的工具redis-benchmark用于检测redis在本机的运行效率redis-check-aof修复AOF持久化文件redis-check-rdb修复RDB持久化文件redis-cliredis命令行工具
password]-h指定远程主机机-p指定Redis服务的端口号-a指定密码未设置数据库密码可以省略-a选项#-a选项若不添加任何选项表示使用127.0.0.1:6379连接本机上的Redis数据库#登录本机redis-cli#远程登录redis-cli
redis-benchmark是官方自带的Redis性能测试工具可以有效的测试Redis服务的性能
[选项值]-h指定服务器主机名。
-p指定服务器端口。
-s指定服务器
socket-c指定并发连接数。
-n指定请求数。
-d以字节的形式指定SET/GET值的数据大小。
-klkeep
使用随机key,SADD使用随机值-P通过管道传输numreg请求-q强制退出redis仅显示query/sec值--csv以CSV格式输出-l生成循环,永久执行测试-t仅运行以逗号分隔的测试命令列表-IIdle模式仅打开N个idle连接并等待
k查看k开头后面任意一位的数据exists判断键是否存在存在1不存在0del删除键type查看键对应的value值类型rename
key2改名不管key2是否存在都会改名成功。
如果存在key1的值会覆盖key2得值renamenx
key2改名若key2不存在可以改名成功。
若key2存在则不进行改名dbsize查看当前数据库中key的数目
使用rename命令进行重命名时无论目标key是否存在都会进行重命名且源key的值会覆盖目标key的值在实际使用过程中建议先用exists命令查看目标key
命令的作用是对已有key进行重命名并检测新名是否存在如果目标key存在则不进行重命名。
不覆盖
支持多数据库Redis默认情况下包含16个数据库数据库名称是用数字0-15来依次命名的。
使用redis-cli连接Redis数据库后默认使用的是序号为0的数据库。
序号#使用redis-cli连接Redis数据库后默认使用的是序号为0的数据库。
127.0.0.1:6379select
#切换至序号为10的数据库127.0.0.1:6379[10]select
#切换至序号为15的数据库127.0.0.1:6379[15]select
FLUSHDB清空当前数据库数据FLUSHALL清空所有数据库的数据
把库堵死。
——建议使用别名把这个命令改名超过内存使用后,部分数据被删除。
——这个有删除策略的,选择适合自己的即可没开持久化却重启了实例,数据全掉。
——记得非缓存的信息需要打开持久化RDB的持久化需要
否则会持久化失败没有持久化情况下,主从,主重启太快,从还没认为主挂的情况下,从会清空自己的数据人为重启主节点前,先关闭从节点的同步
监控查看QPS、缓存命中率、内存使用率等信息确认机器层面的资源是否有异常故障时及时上机使用
打印出操作日志然后分析事后分析此条失效和研发沟通确认是否有大Key在堵塞大Key也可以在日常的巡检中获得
和组内同事沟通确实是否有误操作和运维同事、研发一起排查流量是否正常是否存在被刷的情况
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback