Skip to main content

Simple Item Count Tracker Using Redis

Project description

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

Project details


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.3.tar.gz (4.0 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.3-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for simple_tracker_redis-0.1.3.tar.gz
Algorithm Hash digest
SHA256 4c6c9f8a7973c019c7c7ac512c1b565e2b38ba71e250085d19eba326796a6082
MD5 7e4f5c64b521553009dde09dccb3a6eb
BLAKE2b-256 d016ce08230c68fa3e38609edc564aa565ed08a963662f1d27acf7605997ff5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for simple_tracker_redis-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5ee373df8fe19af3d288a9db6ff9b595d4633b95b6825a42b90e7ca5aecc6d13
MD5 035c74d778bb61881b30648abffbf9d2
BLAKE2b-256 56baf5667e172f65aab780d6233f099d7a80fac9e893a6e0c6b3676954c0c02f

See more details on using hashes here.

Supported by

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