mocra 0.3.0

A distributed, event-driven crawling and data collection framework
use crate::errors::CacheError;
use std::time::Duration;

#[async_trait::async_trait]
pub trait CacheBackend: Send + Sync {
    async fn get(&self, key: &str) -> Result<Option<Vec<u8>>, CacheError>;
    async fn set(&self, key: &str, value: &[u8], ttl: Option<Duration>) -> Result<(), CacheError>;
    async fn del(&self, key: &str) -> Result<(), CacheError>;
    async fn del_batch(&self, keys: &[&str]) -> Result<u64, CacheError>;
    async fn keys(&self, pattern: &str) -> Result<Vec<String>, CacheError>;
    async fn keys_with_limit(&self, pattern: &str, limit: usize)
    -> Result<Vec<String>, CacheError>;
    async fn set_nx(
        &self,
        key: &str,
        value: &[u8],
        ttl: Option<Duration>,
    ) -> Result<bool, CacheError>;
    async fn set_nx_batch(
        &self,
        keys: &[&str],
        value: &[u8],
        ttl: Option<Duration>,
    ) -> Result<Vec<bool>, CacheError>;
    async fn mget(&self, keys: &[&str]) -> Result<Vec<Option<Vec<u8>>>, CacheError>;
    async fn incr(&self, key: &str, delta: i64) -> Result<i64, CacheError>;
    async fn ping(&self) -> Result<(), CacheError>;
    async fn zadd(&self, key: &str, score: f64, member: &[u8]) -> Result<i64, CacheError>;
    async fn zrangebyscore(
        &self,
        key: &str,
        min: f64,
        max: f64,
    ) -> Result<Vec<Vec<u8>>, CacheError>;
    async fn zremrangebyscore(&self, key: &str, min: f64, max: f64) -> Result<i64, CacheError>;
}