mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-01 17:00:21 +08:00
feat: add adaptive pool metrics and self-check
This commit is contained in:
@@ -807,6 +807,22 @@ impl RuntimeState {
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn score_remove(&self, key: &str, member: &str) -> Result<bool, DataLayerError> {
|
||||
match self.backend.as_ref() {
|
||||
RuntimeStateBackend::Memory(memory) => Ok(memory.score_remove(key, member).await),
|
||||
RuntimeStateBackend::Redis(redis) => {
|
||||
let key = redis.keyspace.key(key);
|
||||
let removed = redis_query_i64(redis, "runtime score remove", {
|
||||
let mut command = redis_cmd("ZREM");
|
||||
command.arg(&key).arg(member);
|
||||
command
|
||||
})
|
||||
.await?;
|
||||
Ok(removed > 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn score_remove_by_rank(
|
||||
&self,
|
||||
key: &str,
|
||||
|
||||
@@ -349,6 +349,14 @@ impl MemoryRuntimeBackend {
|
||||
before.saturating_sub(set.len())
|
||||
}
|
||||
|
||||
pub(crate) async fn score_remove(&self, key: &str, member: &str) -> bool {
|
||||
self.scores
|
||||
.lock()
|
||||
.await
|
||||
.get_mut(key)
|
||||
.is_some_and(|set| set.remove(member).is_some())
|
||||
}
|
||||
|
||||
pub(crate) async fn score_len(&self, key: &str) -> usize {
|
||||
self.scores.lock().await.get(key).map_or(0, BTreeMap::len)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user