|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
TTL缓存类模板 更多...
#include <ttl_cache.hpp>
Public 类型 | |
| enum class | refresh_policy : uint8_t { never , on_access , sliding_window } |
| 过期时间刷新策略 更多... | |
| using | clock = steady_clock |
| 时钟类型 | |
| using | time_point = clock::time_point |
| 时间点类型 | |
| using | duration = clock::duration |
| 持续时间类型 | |
| using | size_type = size_t |
| 大小类型 | |
Public 成员函数 | |
| ttl_cache (size_type capacity, duration default_ttl=seconds(60)) | |
| 构造函数 | |
| ~ttl_cache () | |
| 析构函数 | |
| void | enable_cleanup (duration interval=seconds(1)) |
| 启用后台清理线程 | |
| void | disable_cleanup () |
| 禁用后台清理线程 | |
| void | set_refresh_policy (refresh_policy policy) |
| 设置刷新策略 | |
| void | put (const Key &key, const Value &value) |
| 插入缓存项(使用默认TTL) | |
| void | put (const Key &key, const Value &value, duration ttl) |
| 插入缓存项(指定TTL) | |
| NEFORCE_NODISCARD optional< Value > | get (const Key &key) |
| 获取缓存项 | |
| NEFORCE_NODISCARD bool | contains (const Key &key) |
| 检查缓存是否包含指定键 | |
| bool | erase (const Key &key) |
| 删除缓存项 | |
| void | clear () |
| 清空所有缓存项 | |
| NEFORCE_NODISCARD size_type | size () const noexcept |
| 获取当前缓存大小 | |
| NEFORCE_NODISCARD size_type | capacity () const noexcept |
| 获取缓存容量 | |
| void | cleanup () |
| 手动清理过期项 | |
TTL缓存类模板
| Key | 键类型 |
| Value | 值类型 |
实现带有生存时间(TTL)的缓存容器,基于LRU缓存实现。 每个缓存项都有独立的过期时间,过期后自动失效。 支持可选的自动清理线程,定时清理过期项。
特性:
在文件 ttl_cache.hpp 第 44 行定义.
|
strong |
过期时间刷新策略
| 枚举值 | |
|---|---|
| never | 不刷新,保持原始过期时间 |
| on_access | 访问时刷新,每次访问都重置过期时间 |
| sliding_window | 滑动窗口,每次访问延长TTL |
在文件 ttl_cache.hpp 第 55 行定义.
|
inlineexplicit |
构造函数
| capacity | 缓存容量 |
| default_ttl | 默认生存时间,默认为60秒 |
创建一个指定容量和默认TTL的缓存。
在文件 ttl_cache.hpp 第 89 行定义.
引用了 capacity().
|
inline |
手动清理过期项
遍历所有缓存项,删除已过期的项。 此方法在启用后台清理线程时会自动定期调用。
在文件 ttl_cache.hpp 第 246 行定义.
引用了 steady_clock::now() , 以及 pair< T1, T2 >::second.
被这些函数引用 enable_cleanup().
|
inline |
检查缓存是否包含指定键
| key | 键 |
此方法会检查过期时间,如果键已过期则自动删除。
在文件 ttl_cache.hpp 第 203 行定义.
引用了 steady_clock::now().
|
inline |
|
inline |
启用后台清理线程
| interval | 清理间隔,默认为1秒 |
启动后台线程定期清理过期的缓存项。 如果清理线程已运行,此操作无效。
在文件 ttl_cache.hpp 第 107 行定义.
引用了 cleanup().
|
inline |
|
inline |
获取缓存项
| key | 键 |
根据刷新策略决定是否更新过期时间。
在文件 ttl_cache.hpp 第 175 行定义.
引用了 none, steady_clock::now(), on_access , 以及 sliding_window.
|
inline |
插入缓存项(使用默认TTL)
| key | 键 |
| value | 值 |
使用默认TTL插入或更新缓存项。
在文件 ttl_cache.hpp 第 150 行定义.
引用了 steady_clock::now().
|
inline |
插入缓存项(指定TTL)
| key | 键 |
| value | 值 |
| ttl | 生存时间 |
使用指定的TTL插入或更新缓存项。
在文件 ttl_cache.hpp 第 163 行定义.
引用了 steady_clock::now().
|
inline |