Skip to content

Instantly share code, notes, and snippets.

@ichux
Last active April 5, 2025 08:58
Show Gist options
  • Save ichux/4eef9aab00ec46984f554f95b7dfd204 to your computer and use it in GitHub Desktop.
Save ichux/4eef9aab00ec46984f554f95b7dfd204 to your computer and use it in GitHub Desktop.
import time
from datetime import datetime, timedelta, timezone
import redis
RD = redis.Redis(
host="192.168.2.193",
port=6379,
password="U9c4062aca1512V",
decode_responses=True,
db=0,
)
HS = "hs"
def past():
# Current time in UTC
now = datetime.now(timezone.utc)
# Start of today in UTC
start_of_today = now.replace(hour=0, minute=0, second=0, microsecond=0)
# Start of yesterday (00:00:00)
start_of_yesterday = start_of_today - timedelta(days=1)
start_of_yesterday_timestamp = int(start_of_yesterday.timestamp())
# Noon yesterday (12:00:00)
noon_yesterday = start_of_yesterday + timedelta(hours=12)
noon_yesterday_timestamp = int(noon_yesterday.timestamp())
# End of yesterday (23:59:59)
end_of_yesterday = start_of_yesterday + timedelta(hours=23, minutes=59, seconds=59)
end_of_yesterday_timestamp = int(end_of_yesterday.timestamp())
return {
str(start_of_yesterday_timestamp): start_of_yesterday_timestamp,
str(noon_yesterday_timestamp): noon_yesterday_timestamp,
str(end_of_yesterday_timestamp): end_of_yesterday_timestamp,
}
def present():
now = int(time.time())
RD.zadd(HS, {str(now): now})
def yesterday():
RD.zadd(HS, past())
def prune_last_24_hours():
now = int(time.time())
dft = datetime.fromtimestamp(now, tz=timezone.utc)
start_of_day = dft.replace(hour=0, minute=0, second=0, microsecond=0)
start_of_day_timestamp = int(start_of_day.timestamp())
RD.zremrangebyscore(HS, "-inf", start_of_day_timestamp - 1)
def shown():
print(f"Total value: {RD.zcard(HS)}")
for member, score in RD.zrange(HS, 0, -1, withscores=True):
dt = datetime.fromtimestamp(score, tz=timezone.utc)
print(f"{member} | {score} | {dt}")
def delete_keys(*intake):
RD.zrem(HS, *intake)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment