1.数据缓存
在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,直接采用S方法即可。eg:
S(array('type'=>'xcache','expire'=>600));
缓存初始化可以支持的参数根据不同的缓存方式有所不同,常用的参数是:
参数 |
描述 |
expire | 缓存有效期(时间为秒) |
prefix | 缓存标识前缀 |
type | 缓存类型 |
系统目前支持的缓存类型包:
Apachnote, Apc, Db, Eaccelerator, File, Memcache, Redis, Shmop, Sqlite, Wincache 和 Xcache.
如果S方法不传入type参数初始化的话,则读取配置文件中设置的DATA_CACHE_TIME参数值作为默认类型。同样的道理,prefix参数如果没有传入,会读取配置文件的DATA_CACHE_PREFIX参数值,expire参数没有传入则读取DATA_CACHE_TIME配置值作为默认值。
有一些缓存方式会有一些自身特殊的参数,例如Memcache缓存,还需要配置其他的参数:
S(array( 'type'=>'memcache', 'host'=>'192.168.1.10', 'port'=>'11211', 'prefix'=>'think', 'expire'=>60 ));
缓存设置:
S('name',$vaule); //设置缓存 S('name',$value,300); //缓存数据300秒 S('name',$value,array('type'=>'file','expire'=>300)); //采用文件方式缓存数据300秒
读取缓存:
$value = S('name'); //读取缓存 //缓存读取的是前面缓存设置的值,这个值会受缓存初始化或者缓存设置的时候传入的参数影响。如果缓存标识不存在或者已经过期,则返回false,否则返回缓存值
删除缓存:
S('name',null); //删除缓存标识为name的缓存数据
对象方式操作缓存:
$cache = S(array('type'=>'xcache','prefix'=>'think','expire'=>600)); $cache->name = 'value'; //设置缓存 $value = $cache->name; //获取缓存 unset($cache->name); //删除缓存 //如果你设置了缓存前缀的话,对应的缓存操作只是对应该缓存前缀标识的,不会影响其他的缓存
缓存队列:
简单的说就是限制缓存的数量,只需要在初始化的时候指定length参数:
S(array('type'=>'xcache','length'=>100,'expire'=>60)); //设置了length参数后,系统只会缓存最近的100条缓存数据
2.快速缓存
如果你的存储数据没有有效期的需求,那么系统还提供了一个快速缓存方法F可以用来更快的操作。F方法可以支持不同的存储类型,如果是文件类型的话,默认保存在DATA_PATH目录下面。
/** * 快速缓存Data数据 */ F('data',$Data); /** * 快速缓存Data数据,保存到指定的目录 */ F('data',$Data,TEMP_PATH); /** * 获取缓存数据 */ $Data = F('data'); /** * 删除缓存数据 */ F('data',null); //F方法支持自动创建缓存子目录,在DATA_PATH目录下面缓存data数据,如果User目录不存在,在自动创建: F('User/data',$Data);
相关推荐
本示例"Android缓存——将数据以对象的方式缓存到本地"聚焦于如何将登录的用户名和密码存储到本地,以便后续使用。 一、Android缓存概述 Android提供多种缓存机制,包括内存缓存、磁盘缓存以及更复杂的数据库缓存。...
在"重建图标缓存——Delphi工具"中,开发者利用Delphi的强大功能创建了一个专门用于解决图标缓存问题的应用程序。 该工具的主要功能是清理并重建系统的图标缓存,以恢复正常显示。在Windows中,这个过程通常涉及...
Android之本地缓存——LruCache(内存缓存)与DiskLruCache(硬盘缓存)统一框架 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间删除,谢谢您。]
分布式对象存储是一种大规模、高可用、可扩展的数据存储系统,主要设计用于存储和检索大量非结构化数据,如图片、视频、文档等。在互联网时代,这种技术是支撑云服务和大数据应用的基础。《分布式对象存储——原理 ...
为了解决这个问题,“js,css缓存杀手——VS插件”应运而生。这款Visual Studio(VS)插件旨在帮助开发者批量为HTML中的`<link>`和`<script>`标签添加版本号,从而强制浏览器重新获取最新的资源,避免使用旧的缓存...
Oracle缓存连接——Timesten体系结构是一种优化数据库性能的技术,它通过在内存中缓存Oracle数据库的部分或全部数据来加速查询和事务处理。Timesten是Oracle公司提供的一款高性能的内存数据库,专为实时应用设计,能...
内存缓存如Memcached,将数据存储在内存中,避免了磁盘I/O操作,极大地提高了数据获取速度。对于频繁访问但变化不频繁的数据,缓存可以显著减少数据库的读取次数,防止数据库服务器过载。 **22.2.1 缓存机制** ...
Python 通过 Canal 进行数据监控后的数据缓存设计是一种高效的数据处理策略,尤其适用于有大量实时或近实时数据更新的场景。在这个特定的人脸识别项目中,编码阶段的人脸特征被存储到 MySQL 数据库中,而检测阶段则...
在【数据挖掘化功大法(17)——分布式缓存】中,作者提到了一种常见的分布式缓存架构,通常涉及到HTTP服务器、应用服务器和后端数据库。用户首先通过HTTP服务器请求数据,应用服务器处理请求并调用数据库。在首次...
从执行体程序库中的CLLogger类可知,通过缓存要写入文件中的数据,能够提高读写磁盘的性能 请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数 该类要提供数据缓存服务...
双核心CPU缓存数据一致性浅析 本文主要讨论双核心CPU缓存数据一致性问题。随着双核心CPU的出现,缓存数据一致性问题变得越来越重要。双核心CPU的设计主要有两种:独立缓存设计和共享缓存设计。独立缓存设计是指每个...
如果应用采用了缓存更新策略,比如 Cache Aside 或 Write Through,检查这些策略是否正确实施,确保数据在更新时同步到缓存。 8. **RedisTemplate 配置**: 检查 RedisTemplate 的配置,如 keySerializer、...
LRUCache的核心思想是在有限的内存空间内尽可能地存储频繁使用的数据,以便于快速访问。其主要特点包括: - **强引用**:LRUCache内部使用强引用存储数据,确保只要数据还在缓存中就不会被GC回收。 - **队列结构**:...
缓存的基本原理是将经常访问的数据存储在内存中,以便后续快速访问,减少对磁盘或网络的依赖,从而提高数据获取速度。 一、缓存的重要性 1. 减少网络请求:对于网络数据,缓存可以避免频繁的HTTP请求,降低服务器...
本资源“安卓Android源码——图片异步缓存两层缓存.zip”聚焦于如何高效地实现图片的异步加载和两层缓存策略,以提升用户体验并减少内存消耗。下面我们将深入探讨这一主题。 首先,图片异步加载是移动应用中常用的...
它主要通过利用两种不同级别的内存——通常是CPU缓存和硬盘上的磁盘缓存——来减少数据读取的延迟,提高用户体验。本文将深入探讨双缓存的概念、工作原理以及在实际Web应用中的应用。 首先,理解缓存的基本原理是至...
标题中的“ecshop源码分析——用cookie缓存sql语句”揭示了本文将探讨的是电商系统ECSHOP在优化数据库查询性能方面的一个实践,即利用Cookie来缓存SQL语句。ECSHOP是一款基于PHP开发的开源电商解决方案,它的性能...