Synchronize memories between Turso (durable) and redb (cache) storage layers. Use when cache appears stale, after failures, or during periodic maintenance.
Synchronize memories between Turso (durable) and redb (cache) storage layers.
Check connection health:
turso_client.ping().await?;
redb_env.check_integrity()?;
Fetch latest from Turso:
let episodes = turso_client
.query("SELECT * FROM episodes ORDER BY timestamp DESC LIMIT ?")
.bind(max_episodes_cache)
.await?;
Update redb cache:
tokio::task::spawn_blocking(move || {
let write_txn = redb.begin_write()?;
let mut table = write_txn.open_table(EPISODES_TABLE)?;
for episode in episodes {
table.insert(episode.id.as_bytes(), episode.to_bytes())?;
}
write_txn.commit()?;
});
Sync patterns and embeddings if enabled
pub struct SyncConfig {
pub max_episodes_cache: usize, // Default: 1000
pub batch_size: usize, // Default: 100
pub sync_patterns: bool, // Default: true
pub sync_embeddings: bool, // Default: true
}
| Error | Handling |
|---|---|
| Turso unavailable | Skip sync, log warning, retry later |
| redb corruption | Attempt repair, rebuild from Turso |
| Partial sync | Track progress, resume from last point |
After sync, verify:
| Issue | Solution |
|---|---|
| Slow syncs | Reduce cache size, increase batch |
| redb lock errors | Use dedicated write task |
| Memory pressure | Stream large results, smaller batches |