Skip to main content

Simple Tracker(Redis)

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"
  }
]

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simple_tracker_redis-0.1.4.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simple_tracker_redis-0.1.4-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file simple_tracker_redis-0.1.4.tar.gz.

File metadata

File hashes

Hashes for simple_tracker_redis-0.1.4.tar.gz
Algorithm Hash digest
SHA256 37789bee4491779eae02cabb3e8a8dc2d768683d3c0bd21d55938580590cf7e9
MD5 93fd5037536242b81137a6992083d166
BLAKE2b-256 5ff4a37146db0345681b2bc91afb4492caa7cd6d5d1d7abad4494b5212d5d239

See more details on using hashes here.

File details

Details for the file simple_tracker_redis-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for simple_tracker_redis-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1f51bc46542d0e5af375b574d0e6b526852e6d44295a5dfe0059c515a18c2f2d
MD5 4d1575ba86125000f1e8b7750216f3b7
BLAKE2b-256 08d82e1133898e884541885bf0b14dd93fba3fe2ced4e4ff941ed77c1c170bb8

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page