akv/
value.rs

1use std::collections::{BTreeMap, BTreeSet, HashMap, VecDeque};
2
3use bincode::{Decode, Encode};
4
5use crate::utils;
6
7#[derive(Debug, Clone, Encode, Decode)]
8pub enum Value {
9    String(String),
10    List(VecDeque<String>),           // 使用 VecDeque 实现双向链表
11    Hash(HashMap<String, String>),    // 使用标准 HashMap
12    Set(BTreeSet<String>),            // 使用 BTreeSet 实现有序集合
13    SortedSet(BTreeMap<String, f64>), // 使用 BTreeMap 实现有序集合(分数作为值)
14}
15
16#[derive(Debug, Clone, Encode, Decode)]
17pub struct Entry {
18    pub value: Value,
19    pub expires_at: Option<u64>,
20}
21
22impl Entry {
23    pub fn is_expired(&self) -> bool {
24        let now = utils::get_unix_timestamp();
25        self.expires_at.map(|t| t <= now).unwrap_or(false)
26    }
27}