PHP文件缓存与memcached缓存 相比 优缺点是什么呢【总结】

2024-06-18 14:48

本文主要是介绍PHP文件缓存与memcached缓存 相比 优缺点是什么呢【总结】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果不考虑其他任何问题,只比较速度的话,那肯定是mem快,但他们各有优缺点。
文件缓存优点:
1、由于现在的硬盘都非常大,所有如果是大数据的时候,放硬盘里就比较合适,比如做一个cms网站,网站里有10万篇文章,生成的文件大小总数可能就会很大。
2、数据的存放较为安全,由于是硬盘存放,所以在意外掉电的情况下,缓存文件不会丢失。
3、易于扩展,如果硬盘不够用,可以更换大硬盘或者添加硬盘,在容量上受的限制很小。
文件缓存缺点:
1、高并发时,硬盘的读写性能大幅度降低。
2、网站pv持续很高的情况下,硬盘寿命大大降低。

memcached优点:
1、读写性能优异,特别是高并发时和文件缓存比有明显优势。
2、memcached组建支持集群,并且是自动管理负载均衡。
memcached缺点:
1、缓存空间有限:据说一台电脑的mem缓存开到2g以上会出现不稳定,数据无故丢失的现象。
2、掉电丢失数据:由于是把数据放在内存里的,所有一旦机器掉电,数据也就全部丢失了。

一般建议:如果是做内容缓存的话,比如把一些不经常更改的文章放在文件缓存里比较合适,而mem则适合放一些频繁更改的数据,比如可以把session数据放进mem。

 

文件缓存耗IO、过期时间自行控制、不费带宽、不易采用分布式。
cache缓存耗内存、过期时间由cache控制、稍占带宽、易采用分布式。

 

在实际项目应用中,可以联合使用memcache和文件类型缓存。根据热度来把最热的数据放在内存里面。然后把一般的数据放在文件缓存中。

读取数据时,可以按照 memcache=>file_cache=>databases
这样的递归来处理。最大程度的利用缓存来减轻数据库的查询压力。

另外session不能放在内存里面。可以用redis存储session.定时把内存数据刷新到硬盘。这样万一断电或者其他故障,不至于所有session都失效。

 

 

memcache 的使用场景是:当你有大量的数据 >2G 大小,而这些数据是 有可能被很频繁的读写时,memcache可以使用集群,不但跨进程,而且跨机器。

文件缓存,现在较少使用了。因为磁盘io的随机定位是10ms 左右,而且磁盘io太频繁的话,会拖慢整个服务器的处理性能。也没办法支持高并发。

现在的大部分的时候都是将计算和io区分开,可以保证各自的性能。计算可以放到数据库去做,比如查询 ,连表啊 啥的。
io就nosql吧 这样支持高并发好点。


这篇关于PHP文件缓存与memcached缓存 相比 优缺点是什么呢【总结】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072296

相关文章

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Redis解决缓存击穿问题的两种方法

《Redis解决缓存击穿问题的两种方法》缓存击穿问题也叫热点Key问题,就是⼀个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击,本文给大家介绍了Re... 目录引言解决办法互斥锁(强一致,性能差)逻辑过期(高可用,性能优)设计逻辑过期时间引言缓存击穿:给

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

一文详解Nginx的强缓存和协商缓存

《一文详解Nginx的强缓存和协商缓存》这篇文章主要为大家详细介绍了Nginx中强缓存和协商缓存的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、强缓存(Strong Cache)1. 定义2. 响应头3. Nginx 配置示例4. 行为5. 适用场景二、协商缓存(协

Golang基于内存的键值存储缓存库go-cache

《Golang基于内存的键值存储缓存库go-cache》go-cache是一个内存中的key:valuestore/cache库,适用于单机应用程序,本文主要介绍了Golang基于内存的键值存储缓存库... 目录文档安装方法示例1示例2使用注意点优点缺点go-cache 和 Redis 缓存对比1)功能特性

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock