feat: add redis caching
This commit is contained in:
parent
ca63a2a13c
commit
7ecc8c4270
4 changed files with 76 additions and 1 deletions
27
src/utils.rs
27
src/utils.rs
|
@ -1,6 +1,11 @@
|
|||
use actix_web::{cookie::{time::Duration, Cookie, SameSite}, http::header::HeaderMap, HttpResponse};
|
||||
use getrandom::fill;
|
||||
use hex::encode;
|
||||
use redis::{AsyncCommands, RedisError};
|
||||
use serde::Serialize;
|
||||
use serde_json::json;
|
||||
|
||||
use crate::Data;
|
||||
|
||||
pub fn get_auth_header(headers: &HeaderMap) -> Result<&str, HttpResponse> {
|
||||
let auth_token = headers.get(actix_web::http::header::AUTHORIZATION);
|
||||
|
@ -46,3 +51,25 @@ pub fn generate_refresh_token() -> Result<String, getrandom::Error> {
|
|||
Ok(encode(buf))
|
||||
}
|
||||
|
||||
impl Data {
|
||||
pub async fn set_cache_key(&self, key: String, value: impl Serialize, expire: u32) -> Result<(), RedisError> {
|
||||
let mut conn = self.cache_pool.get_multiplexed_tokio_connection().await?;
|
||||
|
||||
let key_encoded = encode(key);
|
||||
|
||||
let value_json = json!(value).to_string();
|
||||
|
||||
redis::cmd("SET",).arg(&[key_encoded.clone(), value_json]).exec_async(&mut conn).await?;
|
||||
|
||||
redis::cmd("EXPIRE").arg(&[key_encoded, expire.to_string()]).exec_async(&mut conn).await
|
||||
}
|
||||
|
||||
pub async fn get_cache_key(&self, key: String) -> Result<String, RedisError> {
|
||||
let mut conn = self.cache_pool.get_multiplexed_tokio_connection().await?;
|
||||
|
||||
let key_encoded = encode(key);
|
||||
|
||||
redis::cmd("GET").arg(key_encoded).query_async(&mut conn).await
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue