QCache

一、描述

QCache<Key, T> 定义了一个缓存,用于存储键值对。

与其他一些基于键的数据结构(例如 QMap 或 QHash)相比,使用 QCache 的优势在于 QCache 会自动获取插入缓存中的对象的所有权,并在必要时删除它们以为新对象腾出空间。

将对象插入缓存时,可以指定一个成本(cost),该成本与对象占用的内存量有一定的关系。当所有对象的成本总和 (totalCost()) 超过缓存的限制 (maxCost()) 时,QCache 开始删除缓存中的对象以保持在限制之下。

默认情况下,QCache 的 maxCost() 为 100。可以在 QCache 构造函数中指定不同的值。

二、部分成员函数

1、bool insert(const Key &key, T *object, qsizetype cost = 1)

插入,缓存中已存在具有相同键的任何对象都将被删除。返回是否成功插入。

此调用后,对象归 QCache 所有,并且可以随时删除。特别是,如果 cost 大于 maxCost(),对象会被立即删除。

totalCost()将加上参数3。

2、T * object(const Key &key) 

返回与键 key 关联的对象,如果键在缓存中不存在,则返回 nullptr。

3、T * take(const Key &key)

从缓存中取出与 key 关联的对象而不删除它。返回指向取出的对象的指针,如果键在缓存中不存在,则返回 nullptr。返回对象的所有权被传递给调用者。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qcache_not_cached表示在查询缓存中找不到的查询次数。根据引用和引用的数据,Qcache_not_cached的值分别为0和2654。这意味着在查询缓存中找不到的查询次数为0或2654次。查询缓存是MySQL中的一个功能,它可以缓存查询的结果,当相同的查询再次执行时,可以直接从缓存中获取结果,从而提高查询的速度。然而,并非所有的查询都适合被缓存,一些查询可能会被MySQL判断为不适合缓存,从而导致Qcache_not_cached的增加。这些不适合被缓存的查询可能包括使用了不可缓存的函数、临时表或者不稳定的查询等。因此,Qcache_not_cached的增加可能意味着一些查询无法被缓存,可能需要对查询进行优化或者调整查询缓存的设置。123 #### 引用[.reference_title] - *1* [MySQL优化之缓存优化](https://blog.csdn.net/weixin_42165980/article/details/113557558)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* *3* [MySQL查询高速缓冲](https://blog.csdn.net/weixin_30477293/article/details/96263389)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值