찾다
백엔드 개발PHP 튜토리얼 memcache怎么定期删除不常用的数据

memcache如何定期删除不常用的数据
如题,如何防止memcache里的数据无限制增长,如何实现定期删除长时间不用或使用频率低的数据。在线等!

------解决方案--------------------
我就知道memcache可以像session或cookie那样设个过期时间
------解决方案--------------------
定制规则;有能力可以修改memcache实现
------解决方案--------------------
memcache是在slab内存池的基础上, 每个slab内维护LRU链表, 每个NODE具有生命期, 所有Cache的NODE组成Hash表。

memcache采用懒惰删除机制, 其内存请求步骤大致是这样一个请求链: 根据node的size定位到slab ---> 从该slab的LRU尾部向前寻找过期且reference==1的NODE, 如果找到, 则从hash表与LRU中unlink此NODE, 并将此NODE插入到LRU头部并且reference置1, 将输入存入node尾部, 重新插入到哈希表中. 如果没找到, 那么会直接向slab申请新的内存来存储NODE, 这也就是内存池的功能了, 如果申请失败, 那么接下来的策略是重新扫描LRU, 找出那些虽然没有过期, 但reference==1的NODE, 直接回收使用, 这是不得已的策略. 如果这个策略都失败了, 我印象中还有一个策略, 是对于那些生命期已经失效3天并且当前refercence != 1的结点强制回收, 我记得注释里说那是一个小BUG, 这样处理是OK的, 大概意思是:somewhere refer to this node, becuase nowhere refers to it, 不知道这个BUG发生在哪里,我当初是没研究出来, 因为get/remove都是配对出现在memcache的各个函数里的, 真不知道引用计数怎么会失效3天还不为0.

所以,你看懂了没... 也就是尽可能的把内存分配向外推, 程序一开始就分配了很大的malloc内存充当内存池由slab管理, 而内存的重用是由LRU链表完成的, 不是一个线程定期扫描, 而是有需求才检测的方法, 达到了异步的效果.
------解决方案--------------------

探讨
memcache是在slab内存池的基础上, 每个slab内维护LRU链表, 每个NODE具有生命期, 所有Cache的NODE组成Hash表。

memcache采用懒惰删除机制, 其内存请求步骤大致是这样一个请求链: 根据node的size定位到slab ---> 从该slab的LRU尾部向前寻找过期且reference==1的NODE, 如果找到, 则从hash表与LRU中unlink此……

------解决方案--------------------
LS已经解释的很详细了...

一句话总结的话....
你只要在启动memcached的时候,用-m参数设定memcached所能占用的最大内存数,剩下的事情都是memcached自己搞定了,不需要你操心,它会把最没用的数据自己扔掉
------解决方案--------------------
定期flush
------解决方案--------------------
记得java是有memcache的flush方法,php应该会有的
至于定期的事情,你可以在一个php文件中写入flush,在linux中crontab 定时请求,例如
*/10 */23 * * * wget -q --spider http://www.xxxx.com/statbyday/stat1.php > /dev/null 2>&1
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
在PHP中使用Memcache缓存常见问题及解决办法在PHP中使用Memcache缓存常见问题及解决办法May 16, 2023 am 09:07 AM

在Web应用中,缓存是一个非常重要的技术。缓存可以大大减少数据库和服务器的负载,提高Web应用的性能。Memcache是一种高性能的分布式内存缓存系统,常用于Web应用中。在PHP中使用Memcache缓存,有时会出现一些问题,本文将介绍这些问题及其解决办法。问题一:无法连接到Memcache服务器在使用Memcache缓存时,第一个遇到的问题可能是无法连接

利用Memcache缓存技术提高PHP应用的并发处理能力利用Memcache缓存技术提高PHP应用的并发处理能力May 18, 2023 am 08:12 AM

随着互联网的飞速发展,越来越多的应用程序需要面对大量的并发请求,如何提高应用的并发处理能力成为开发者们需要解决的问题。其中,利用Memcache缓存技术进行并发优化成为了相对较为流行的一种方案。Memcache是一种高效的缓存技术,适用于大型Web应用程序、数据库和分布式系统。其特点是将数据存储于内存中,以实现高速读写操作。在Web应用程序的数据访问过程中,

PHP应用中的Memcache缓存技术如何避免出现数据损坏PHP应用中的Memcache缓存技术如何避免出现数据损坏May 15, 2023 pm 10:01 PM

Memcache是一种在Web应用中常用的缓存技术,对于高并发的应用,它能够减轻数据库的压力,提高数据读取速度,降低系统响应时间。但是,在实际运用中,由于某些原因,会出现缓存数据被破坏的情况。本文主要从以下几个方面来讲述如何避免PHP应用中Memcache缓存技术出现数据损坏的情况。一、数据序列化通常情况下,我们将需要缓存的数据直接以对象形式存储到Memca

Memcache缓存技术在PHP项目中的应用和实践Memcache缓存技术在PHP项目中的应用和实践May 17, 2023 pm 02:10 PM

Memcache是一种开源的、分布式的缓存技术。它通过将数据存储在内存中,极大地提高了数据的访问速度,从而提升了网站的性能和响应速度。在PHP项目中,Memcache缓存技术也被广泛应用,并且取得了很好的效果。本篇文章将深入探讨Memcache缓存技术在PHP项目中的应用和实践。一、Memcache的原理和优势Memcache是一种内存缓存技术,它可以将数据

利用PHP中的Memcache缓存优化Gzip压缩算法利用PHP中的Memcache缓存优化Gzip压缩算法May 15, 2023 pm 04:31 PM

随着网络技术越来越发达,网站的访问量逐渐增多,为了提升用户体验,我们需要尽可能地减少网页的加载时间和传输数据的大小。其中,Gzip压缩算法是一种经典的数据压缩算法,可以在传输数据时将数据压缩,减少传输数据的大小,从而提升网页的加载速度和用户体验。在使用Gzip压缩算法来优化网站时,我们还可以结合PHP中的Memcache缓存技术来进一步提升网站的性能。一、G

如何使用PHP中的Memcache缓存技术提高网站的大并发性能如何使用PHP中的Memcache缓存技术提高网站的大并发性能May 17, 2023 pm 05:00 PM

随着互联网技术的不断发展,网站的用户访问量越来越大,带来的并发访问量也越来越高。为了应对这种高并发访问,常用的手段是使用缓存技术。而在PHP语言中,Memcache缓存技术是一种非常有效的解决方案。Memcache是一种分布式缓存系统,能够将大量的数据缓存在内存中,并能够从内存中快速读取,从而提高网站的响应速度和并发能力。在本文中,我们将介绍如何使用PHP中

Memcache缓存技术如何构建PHP中的缓存架构Memcache缓存技术如何构建PHP中的缓存架构May 15, 2023 pm 05:40 PM

随着互联网时代的到来,Web应用程序的访问量越来越大,同时性能也愈发成为用户优先考量因素之一。缓存技术因此应运而生。Memcache作为一种高性能、分布式的内存对象缓存系统,被广泛应用于Web开发中。在PHP中构建Memcache缓存架构,可大幅提升Web应用程序的性能和响应速度。下面我们将分为以下几个方面,阐述Memcache缓存技术在PHP中的构建方式。

使用PHP的Memcache技术提高Web应用程序的可扩展性使用PHP的Memcache技术提高Web应用程序的可扩展性May 15, 2023 pm 06:51 PM

随着Internet技术的不断发展和普及,Web应用程序的使用数量和流量不断增加。在这种情况下,如何提高Web应用程序的可扩展性和性能是迫切需要解决的问题。其中,使用PHP的Memcache技术是一种非常有效的方案。Memcache是一种高速缓存技术,可以将数据存储在内存中以提高访问速度。在Web应用程序中,Memcache通常用于缓存数据库查询结果、页面片

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구