cache — 缓存子系统¶
SQLite 缓存 + 双源校验,见 架构设计 中关于缓存层的说明。
cache.cache_manager¶
cache_manager
¶
SQLite缓存管理器
提供日K线数据的智能缓存功能,支持双源校验和平滑切换
CacheManager
¶
缓存管理器
初始化缓存管理器
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
config
|
配置对象 |
必需 | |
adapters
|
Dict
|
适配器字典 |
必需 |
源代码位于: cache/cache_manager.py
get_cached_kline
¶
get_cached_kline(code: str, start_date: Optional[str] = None, end_date: Optional[str] = None, count: Optional[int] = None) -> Optional[DataFrame]
从缓存获取K线数据
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
start_date
|
Optional[str]
|
开始日期 |
None
|
end_date
|
Optional[str]
|
结束日期 |
None
|
count
|
Optional[int]
|
获取数量 |
None
|
返回:
| 类型 | 描述 |
|---|---|
Optional[DataFrame]
|
DataFrame或None |
源代码位于: cache/cache_manager.py
save_to_cache
¶
save_to_cache(code: str, df: DataFrame, source1: str, source2: Optional[str] = None, validated: bool = False) -> bool
保存数据到缓存
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
df
|
DataFrame
|
K线数据 |
必需 |
source1
|
str
|
主数据源 |
必需 |
source2
|
Optional[str]
|
校验数据源 |
None
|
validated
|
bool
|
是否已校验 |
False
|
返回:
| 类型 | 描述 |
|---|---|
bool
|
是否保存成功 |
源代码位于: cache/cache_manager.py
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 | |
validate_and_cache
¶
validate_and_cache(code: str, df1: DataFrame, df2: DataFrame, source1: str, source2: str) -> Optional[DataFrame]
双源校验并缓存
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
df1
|
DataFrame
|
数据源1的数据 |
必需 |
df2
|
DataFrame
|
数据源2的数据 |
必需 |
source1
|
str
|
数据源1名称 |
必需 |
source2
|
str
|
数据源2名称 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[DataFrame]
|
校验通过的DataFrame |
源代码位于: cache/cache_manager.py
validate_and_cache_voting
¶
validate_and_cache_voting(code: str, primary_df: DataFrame, validation_dfs: Dict[str, DataFrame], primary_source: str) -> Optional[DataFrame]
三选二投票校验并缓存
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
primary_df
|
DataFrame
|
主数据源 DataFrame |
必需 |
validation_dfs
|
Dict[str, DataFrame]
|
{源名: DataFrame} 校验源字典 |
必需 |
primary_source
|
str
|
主数据源名称 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[DataFrame]
|
校验通过的 DataFrame |
源代码位于: cache/cache_manager.py
get_validated_dates
¶
获取某只股票已通过校验的缓存日期集合
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
set
|
已验证日期的set,如 {'2024-01-02', '2024-01-03', ...} |
源代码位于: cache/cache_manager.py
cleanup_old_cache
¶
清理超过指定天数的旧缓存
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
days
|
Optional[int]
|
保留天数,默认使用max_days配置 |
None
|
源代码位于: cache/cache_manager.py
get_cache_statistics
¶
获取缓存统计信息
返回:
| 类型 | 描述 |
|---|---|
Dict[str, Any]
|
统计信息字典 |
源代码位于: cache/cache_manager.py
get_cached_stock_name
¶
从缓存获取股票名称(已优化:周六清理时删除过期记录)
策略: - 周六清理时已删除过期记录,缓存中只保留有效数据 - 查询时直接返回缓存,无需时间比对,性能最优 - 缓存不存在则返回None,触发从baostock获取最新数据
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[str]
|
股票名称,未找到返回None |
源代码位于: cache/cache_manager.py
cache_stock_name
¶
缓存股票名称到数据库
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
name
|
str
|
股票名称 |
必需 |
source
|
str
|
数据来源 |
'baostock'
|
返回:
| 类型 | 描述 |
|---|---|
bool
|
是否成功 |
源代码位于: cache/cache_manager.py
bulk_cache_stock_names
¶
批量缓存股票名称(单事务写入)
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
names
|
dict
|
{code: name} 字典 |
必需 |
source
|
str
|
数据来源 |
'tushare'
|
返回:
| 类型 | 描述 |
|---|---|
int
|
成功写入数量 |
源代码位于: cache/cache_manager.py
get_stock_name_cache_count
¶
获取股票名称缓存数量
源代码位于: cache/cache_manager.py
clean_expired_stock_names
¶
清理过期的股票名称缓存
返回:
| 类型 | 描述 |
|---|---|
int
|
清理的数量 |
源代码位于: cache/cache_manager.py
get_stock_name_cache_stats
¶
获取股票名称缓存统计信息
返回:
| 类型 | 描述 |
|---|---|
Dict[str, Any]
|
统计信息字典 |
源代码位于: cache/cache_manager.py
cache(包导出)¶
cache
¶
缓存管理模块
提供K线数据的智能缓存功能
CacheManager
¶
缓存管理器
初始化缓存管理器
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
config
|
配置对象 |
必需 | |
adapters
|
Dict
|
适配器字典 |
必需 |
源代码位于: cache/cache_manager.py
get_cached_kline
¶
get_cached_kline(code: str, start_date: Optional[str] = None, end_date: Optional[str] = None, count: Optional[int] = None) -> Optional[DataFrame]
从缓存获取K线数据
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
start_date
|
Optional[str]
|
开始日期 |
None
|
end_date
|
Optional[str]
|
结束日期 |
None
|
count
|
Optional[int]
|
获取数量 |
None
|
返回:
| 类型 | 描述 |
|---|---|
Optional[DataFrame]
|
DataFrame或None |
源代码位于: cache/cache_manager.py
save_to_cache
¶
save_to_cache(code: str, df: DataFrame, source1: str, source2: Optional[str] = None, validated: bool = False) -> bool
保存数据到缓存
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
df
|
DataFrame
|
K线数据 |
必需 |
source1
|
str
|
主数据源 |
必需 |
source2
|
Optional[str]
|
校验数据源 |
None
|
validated
|
bool
|
是否已校验 |
False
|
返回:
| 类型 | 描述 |
|---|---|
bool
|
是否保存成功 |
源代码位于: cache/cache_manager.py
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 | |
validate_and_cache
¶
validate_and_cache(code: str, df1: DataFrame, df2: DataFrame, source1: str, source2: str) -> Optional[DataFrame]
双源校验并缓存
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
df1
|
DataFrame
|
数据源1的数据 |
必需 |
df2
|
DataFrame
|
数据源2的数据 |
必需 |
source1
|
str
|
数据源1名称 |
必需 |
source2
|
str
|
数据源2名称 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[DataFrame]
|
校验通过的DataFrame |
源代码位于: cache/cache_manager.py
validate_and_cache_voting
¶
validate_and_cache_voting(code: str, primary_df: DataFrame, validation_dfs: Dict[str, DataFrame], primary_source: str) -> Optional[DataFrame]
三选二投票校验并缓存
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
primary_df
|
DataFrame
|
主数据源 DataFrame |
必需 |
validation_dfs
|
Dict[str, DataFrame]
|
{源名: DataFrame} 校验源字典 |
必需 |
primary_source
|
str
|
主数据源名称 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[DataFrame]
|
校验通过的 DataFrame |
源代码位于: cache/cache_manager.py
get_validated_dates
¶
获取某只股票已通过校验的缓存日期集合
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
set
|
已验证日期的set,如 {'2024-01-02', '2024-01-03', ...} |
源代码位于: cache/cache_manager.py
cleanup_old_cache
¶
清理超过指定天数的旧缓存
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
days
|
Optional[int]
|
保留天数,默认使用max_days配置 |
None
|
源代码位于: cache/cache_manager.py
get_cache_statistics
¶
获取缓存统计信息
返回:
| 类型 | 描述 |
|---|---|
Dict[str, Any]
|
统计信息字典 |
源代码位于: cache/cache_manager.py
get_cached_stock_name
¶
从缓存获取股票名称(已优化:周六清理时删除过期记录)
策略: - 周六清理时已删除过期记录,缓存中只保留有效数据 - 查询时直接返回缓存,无需时间比对,性能最优 - 缓存不存在则返回None,触发从baostock获取最新数据
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
Optional[str]
|
股票名称,未找到返回None |
源代码位于: cache/cache_manager.py
cache_stock_name
¶
缓存股票名称到数据库
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
code
|
str
|
股票代码 |
必需 |
name
|
str
|
股票名称 |
必需 |
source
|
str
|
数据来源 |
'baostock'
|
返回:
| 类型 | 描述 |
|---|---|
bool
|
是否成功 |
源代码位于: cache/cache_manager.py
bulk_cache_stock_names
¶
批量缓存股票名称(单事务写入)
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
names
|
dict
|
{code: name} 字典 |
必需 |
source
|
str
|
数据来源 |
'tushare'
|
返回:
| 类型 | 描述 |
|---|---|
int
|
成功写入数量 |
源代码位于: cache/cache_manager.py
get_stock_name_cache_count
¶
获取股票名称缓存数量
源代码位于: cache/cache_manager.py
clean_expired_stock_names
¶
清理过期的股票名称缓存
返回:
| 类型 | 描述 |
|---|---|
int
|
清理的数量 |
源代码位于: cache/cache_manager.py
get_stock_name_cache_stats
¶
获取股票名称缓存统计信息
返回:
| 类型 | 描述 |
|---|---|
Dict[str, Any]
|
统计信息字典 |