db: Added ephemeral key functions (#84)

This commit is contained in:
Kartikeya Hegde
2022-12-08 20:23:39 +05:30
committed by GitHub
parent 4eaa54e138
commit 5b470bf8f5
11 changed files with 190 additions and 6 deletions

View File

@ -13,7 +13,7 @@ use fred::{
interfaces::{KeysInterface, StreamsInterface},
types::{
Expiration, FromRedis, MultipleIDs, MultipleKeys, MultipleOrderedPairs, MultipleStrings,
RedisValue, SetOptions, XReadResponse,
RedisMap, RedisValue, SetOptions, XReadResponse,
},
};
use router_env::{tracing, tracing::instrument};
@ -43,6 +43,18 @@ impl super::RedisConnectionPool {
.change_context(errors::RedisError::SetFailed)
}
pub async fn msetnx<V>(&self, value: V) -> CustomResult<u8, errors::RedisError>
where
V: TryInto<RedisMap> + Debug,
V::Error: Into<fred::error::RedisError>,
{
self.pool
.msetnx::<u8, V>(value)
.await
.into_report()
.change_context(errors::RedisError::SetFailed)
}
#[instrument(level = "DEBUG", skip(self))]
pub async fn serialize_and_set_key<V>(
&self,