@@ -28,6 +28,7 @@ use crate::{
28
28
29
29
pub struct RedisTaskDb {
30
30
conn : Connection ,
31
+ config : RedisConfig ,
31
32
}
32
33
33
34
pub struct RedisTaskManager {
@@ -129,14 +130,18 @@ impl ToRedisArgs for TaskIdDescriptor {
129
130
}
130
131
}
131
132
132
- // redis key ttl
133
- const TTL_SECS : u64 = 2 * 24 * 3600 ; // 2 days
133
+ #[ derive( Debug , Clone , Default ) ]
134
+ pub struct RedisConfig {
135
+ url : String ,
136
+ ttl : u64 ,
137
+ }
134
138
135
139
impl RedisTaskDb {
136
- fn new ( url : & str ) -> RedisDbResult < Self > {
140
+ fn new ( config : RedisConfig ) -> RedisDbResult < Self > {
141
+ let url = config. url . clone ( ) ;
137
142
let client = Client :: open ( url) . map_err ( RedisDbError :: RedisDb ) ?;
138
143
let conn = client. get_connection ( ) . map_err ( RedisDbError :: RedisDb ) ?;
139
- Ok ( RedisTaskDb { conn } )
144
+ Ok ( RedisTaskDb { conn, config } )
140
145
}
141
146
142
147
fn insert_proof_task (
@@ -161,7 +166,7 @@ impl RedisTaskDb {
161
166
V : ToRedisArgs ,
162
167
{
163
168
self . conn
164
- . set_ex ( key, value, TTL_SECS )
169
+ . set_ex ( key, value, self . config . ttl )
165
170
. map_err ( RedisDbError :: RedisDb ) ?;
166
171
Ok ( ( ) )
167
172
}
@@ -272,7 +277,7 @@ impl RedisTaskDb {
272
277
}
273
278
274
279
fn update_status_redis ( & mut self , k : & String , v : & String ) -> RedisDbResult < ( ) > {
275
- self . conn . set_ex ( k, v, TTL_SECS ) ?;
280
+ self . conn . set_ex ( k, v, self . config . ttl ) ?;
276
281
Ok ( ( ) )
277
282
}
278
283
}
@@ -553,7 +558,11 @@ impl TaskManager for RedisTaskManager {
553
558
INIT . call_once ( || {
554
559
unsafe {
555
560
CONN = Some ( Arc :: new ( Mutex :: new ( {
556
- let db = RedisTaskDb :: new ( & opts. redis_url ) . unwrap ( ) ;
561
+ let db = RedisTaskDb :: new ( RedisConfig {
562
+ url : opts. redis_url . clone ( ) ,
563
+ ttl : opts. redis_ttl . clone ( ) ,
564
+ } )
565
+ . unwrap ( ) ;
557
566
db
558
567
} ) ) )
559
568
} ;
0 commit comments