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.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.

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