Simple Item Count Tracker using Redis
Project description
Simple Tracker
Simple Tracker 是一个基于 Redis 的轻量级计数跟踪系统,支持按分钟、小时、天三种时间粒度对项目进行计数统计。
功能特点
- 支持多种时间粒度跟踪:分钟(m)、小时(h)、天(d)
- 自动过期机制,避免数据无限增长
- 同步和异步两种实现方式
- 提供装饰器模式方便集成
核心组件
ItemTracker (同步版本)
from tracker import ItemTracker
# 初始化
tracker = ItemTracker(redis_client, tracker_name="my_tracker")
# 跟踪项目出现次数
tracker.track_item_occurrence("item_name")
# 获取指定时间粒度的计数
count = tracker.get_item_count("item_name", "h") # 按小时统计
# 获取分布统计
distribution = tracker.get_count_distribution("d") # 按天获取分布
AsyncItemTracker (异步版本)
from tracker import AsyncItemTracker
# 初始化
async_tracker = AsyncItemTracker(redis_client, tracker_name="my_tracker")
# 异步跟踪项目出现次数
await async_tracker.track_item_occurrence("item_name")
# 异步获取指定时间粒度的计数
count = await async_tracker.get_item_count("item_name", "h")
# 异步获取分布统计
distribution = await async_tracker.get_count_distribution("d")
使用装饰器模式
同步装饰器
from tracker import get_tracker
track_item = get_tracker(redis_client)
@track_item("api_call")
def my_function():
pass
异步装饰器
from tracker import get_async_tracker
track_item = get_async_tracker(redis_client)
@track_item("api_call")
async def my_async_function():
pass
数据存储结构
Redis 中的数据以以下格式存储:
{tracker_name}:{granularity}:{time_period} -> Hash {item_name: count}
例如:
my_tracker:h:2023120115 -> {"api_call": 25, "user_login": 10}
过期时间设置
- 分钟级数据保留 60 分钟
- 小时级数据保留 24 小时
- 天级数据保留 14 天
返回数据格式
get_count_distribution 方法返回如下格式的数据:
[
{
"item_name": "api_call",
"total_count": 25,
"freq": "h",
"period": "2023120115"
}
]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simple_tracker_redis-0.1.2.tar.gz.
File metadata
- Download URL: simple_tracker_redis-0.1.2.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
145a7638c6a8bfeda3f6f4c21ea3634cd22af0f3fe600031f9f3c9e091b31a39
|
|
| MD5 |
a6b4b0f75c87019d046ca26e4f08e1b3
|
|
| BLAKE2b-256 |
30ef9ab9c5d4c8c14834bbfde24d0fd73a06061ad7f13e99cb0e87fa276bb8bc
|
File details
Details for the file simple_tracker_redis-0.1.2-py3-none-any.whl.
File metadata
- Download URL: simple_tracker_redis-0.1.2-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2727e275376cde94a8a245e9904c06ea5097d5dcd063c13ec813fa835a0f7cb8
|
|
| MD5 |
46adf9ef3c73d4def5550df62fa27047
|
|
| BLAKE2b-256 |
328ccab970e2d679195d01371924b87866a861b936d7b4cab45a3ee8eb80c910
|