use crate::{error::Result, traits::DbLike};
pub trait Key: DbLike {
fn del<K: AsRef<[u8]>>(&self, keys: &[K]) -> Result<usize>;
fn exists<K: AsRef<[u8]>>(&self, keys: &[K]) -> Result<usize>;
fn keys<P: AsRef<[u8]>>(&self, pattern: P) -> Result<Vec<Vec<u8>>>;
fn key_count(&self) -> Result<usize>;
fn key_persist<K: AsRef<[u8]>>(&self, key: K) -> Result<bool>;
fn expire<K: AsRef<[u8]>>(&self, key: K, ttl_sec: u64) -> Result<bool>;
fn expire_at<K: AsRef<[u8]>>(&self, key: K, expire_at_ms: u64) -> Result<bool>;
fn ttl<K: AsRef<[u8]>>(&self, key: K) -> Result<i64>;
fn pttl<K: AsRef<[u8]>>(&self, key: K) -> Result<i64>;
fn key_type<K: AsRef<[u8]>>(&self, key: K) -> Result<&'static str>;
fn get_key_expire_at<K: AsRef<[u8]>>(&self, key: K) -> Result<Option<u64>>;
}