Discuz! 内存缓存机制与使用方法
2017-03-21 10:19
661 查看
内存级缓存
缓存层的引入是为了解决MYSQL自身对高并发处理的性能瓶颈,目前产品缓存层采用主流的Key-Value对形式,内存级的缓存产品很多,支持的内存优化接口有 Memcache、eAccelerator、Alternative PHP Cache(APC)、Xcache、Redis 五种,优化系统将会依据当前服务器环境依次选用接口,单服务器环境中推荐使用APC,多服务器环境中推荐使用Redis或Memcache。数据层是以表为单位的类文件,所有表类都继承discuz_table基类,基类实现缓存操 作的相关函数;理论上所有的数据表均可以缓存,目前产品在六个压力大的数据表内置开启了缓存 机制:用户相关表、回帖、主题、主题和专辑关系、淘贴专辑、用户关注关系。
用户相关表
缓存表:'common_member', 'count', 'status','profile', 'field_home', 'field_forum'。
UID为缓存KEY。表数据更新时缓存数据会同步更新。
回帖
以TID为单位,缓存第一页的post数据。表数据更新时缓存数据会同步更新。
主题
TID为缓存KEY。表数据更新时缓存数据会同步更新。
版块列表默认参数第一页时以 forumdisplay_FID 为缓存KEY,缓存时间内数据不更新。
主题和专辑关系
以TID为单位,此TID的专辑ID集合,表数据更新时缓存数据会同步更新。
淘贴专辑
以TID为单位,此TID的专辑集合,缓存时间内数据不更新。
用户关注关系
以UID为单位,此UID关注用户的关系数据,缓存时间内数据不更新。
内存级缓存层实现细节
discuz_table基类中缓存机制的实现/** * @var string 缓存主键名前缀,为空时表示此表不支持缓存 */ protected $_pre_cache_key; /** * @var string 缓存时间,以秒为单位,0表示永久或相关配置文件中的默认值 */ protected $_cache_ttl;
discuz_table基类中缓存机制的方法
//缓存一个变量到缓存中,如果 KEY已经在则会被覆盖为新值 store_cache($id, $data, $cache_ttl = null, $pre_cache_key = null) //获取指定KEY的缓存数据 fetch_cache($ids, $pre_cache_key = null) //清除指定KEY的缓存 clear_cache($ids, $pre_cache_key = null) //更新一个已经存在的KEY,只更新修改的字段 update_cache($id, $data, $cache_ttl = null, $pre_cache_key = null) //批量更新缓存,只更新已经存在KEY的指定修改的字段 update_batch_cache($ids, $data, $cache_ttl = null, $pre_cache_key = null) //重置已经存在的KEY的值 reset_cache($ids, $pre_cache_key = null) //累加缓存数据中某字段的值 increase_cache($ids, $data, $cache_ttl = null, $pre_cache_key = null)
相关文章推荐
- Discuz!X/缓存机制和使用方法
- android 使用内存缓存机制缓存图片,优化listview,recylerview
- 内存缓存__discuz缓存机制(内存缓存,memory())
- CodeIgniter的缓存机制与使用方法
- CodeIgniter的缓存机制与使用方法
- CodeIgniter的缓存机制与使用方法
- CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]
- 【Redis缓存机制】2.Redis安装和简单使用
- ASP.NET缓存使用方法
- php禁止浏览器使用缓存页面的方法
- Linux下判断内存使用的一些方法和说明【转】
- 使用多线程机制异步执行业务方法
- 为程序使用内存缓存(MemoryCache)
- Android 内存使用hprof文件打开方法
- Linux下判断内存使用的一些方法和说明
- Android 应用开发 之使用LruCache和DiskLruCache来在内存和SD卡中缓存图片
- Android中关于Volley的使用(八)缓存机制的深入认识
- vue2使用keep-alive缓存多层列表页的方法
- 使用Discuz!自带参数防御CC攻击以及原理,修改Discuz X 开启防CC攻击后,不影响搜索引擎收录的方法
- python在linux系统下获取系统内存使用情况的方法