45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
import redis
|
|
from redis import Redis
|
|
from typing import Optional
|
|
from pydantic import BaseModel
|
|
|
|
from app.core import cache
|
|
from app.core.config import get_redis_config
|
|
|
|
REDIS_CONFIG = {
|
|
"host": "localhost",
|
|
"port": 6379,
|
|
"db": 0,
|
|
"decode_responses": False,
|
|
"socket_timeout": 5,
|
|
"socket_connect_timeout": 5,
|
|
"health_check_interval": 30,
|
|
}
|
|
|
|
_redis_pool = None
|
|
|
|
def get_redis_pool() -> redis.ConnectionPool:
|
|
global _redis_pool
|
|
if _redis_pool is None:
|
|
redis_config = get_redis_config()
|
|
_redis_pool = redis.ConnectionPool(
|
|
host=redis_config.host,
|
|
port=redis_config.port,
|
|
db=redis_config.db,
|
|
password=redis_config.password,
|
|
decode_responses=redis_config.decode_responses,
|
|
socket_timeout=redis_config.socket_timeout,
|
|
socket_connect_timeout=redis_config.socket_connect_timeout,
|
|
health_check_interval=redis_config.health_check_interval
|
|
)
|
|
return _redis_pool
|
|
|
|
def get_redis_client() -> Redis:
|
|
pool = get_redis_pool()
|
|
return redis.Redis(connection_pool=pool)
|
|
|
|
class CacheNews(BaseModel):
|
|
title: str
|
|
url: str
|
|
score: int
|
|
desc: str |