Skip to main content

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


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.2.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.2-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for simple_tracker_redis-0.1.2.tar.gz
Algorithm Hash digest
SHA256 145a7638c6a8bfeda3f6f4c21ea3634cd22af0f3fe600031f9f3c9e091b31a39
MD5 a6b4b0f75c87019d046ca26e4f08e1b3
BLAKE2b-256 30ef9ab9c5d4c8c14834bbfde24d0fd73a06061ad7f13e99cb0e87fa276bb8bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for simple_tracker_redis-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2727e275376cde94a8a245e9904c06ea5097d5dcd063c13ec813fa835a0f7cb8
MD5 46adf9ef3c73d4def5550df62fa27047
BLAKE2b-256 328ccab970e2d679195d01371924b87866a861b936d7b4cab45a3ee8eb80c910

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