#[non_exhaustive]pub struct RewriteStats {
pub keys: u64,
pub bytes: u64,
}Expand description
Result of an Aof::rewrite_from call. Surfaced by BGREWRITEAOF /
INFO persistence. The default is the empty rewrite (no keys, no
bytes), the starting point for summing several shards’ stats.
use kevy_persist::{Aof, Fsync, RewriteStats};
let dir = kevy_tmpdir::unique_dir("stats-doc");
let mut total = RewriteStats::default();
for shard in 0..2 {
let mut aof = Aof::open(&kevy_persist::layout::aof_path(&dir, shard), Fsync::No)?;
let stats = aof.rewrite_from(&kevy_store::Store::new())?;
(total.keys, total.bytes) = (total.keys + stats.keys, total.bytes + stats.bytes);
}
assert_eq!(total.keys, 0);
// an empty image is its header alone
let empty = kevy_persist::estimate_rewrite_size(&kevy_store::Store::new());
assert_eq!(total.bytes, 2 * empty);Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.keys: u64Keys dumped into the new AOF.
use kevy_persist::{Aof, Argv, Fsync};
use kevy_store::{SetCondition, Store};
let path = std::env::temp_dir().join(format!("stats-keys-doc-{}.aof", std::process::id()));
let mut aof = Aof::open(&path, Fsync::No)?;
let mut store = Store::new();
for _ in 0..3 {
// three writes to one key compact to one key
store.set(b"k", b"v".to_vec(), None, SetCondition::Always);
aof.append(&Argv::from(vec![b"SET".to_vec(), b"k".to_vec(), b"v".to_vec()]))?;
}
assert_eq!(aof.rewrite_from(&store)?.keys, 1);bytes: u64New AOF size in bytes.
use kevy_persist::{Aof, Fsync};
let path = std::env::temp_dir().join(format!("stats-bytes-doc-{}.aof", std::process::id()));
let mut aof = Aof::open(&path, Fsync::No)?;
let stats = aof.rewrite_from(&kevy_store::Store::new())?;
assert_eq!(stats.bytes, std::fs::metadata(&path)?.len());
assert_eq!(aof.size_bytes(), stats.bytes);Trait Implementations§
Source§impl Clone for RewriteStats
impl Clone for RewriteStats
Source§fn clone(&self) -> RewriteStats
fn clone(&self) -> RewriteStats
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for RewriteStats
Source§impl Debug for RewriteStats
impl Debug for RewriteStats
Source§impl Default for RewriteStats
impl Default for RewriteStats
Source§fn default() -> RewriteStats
fn default() -> RewriteStats
Returns the “default value” for a type. Read more
impl Eq for RewriteStats
Source§impl Hash for RewriteStats
impl Hash for RewriteStats
Source§impl PartialEq for RewriteStats
impl PartialEq for RewriteStats
impl StructuralPartialEq for RewriteStats
Auto Trait Implementations§
impl Freeze for RewriteStats
impl RefUnwindSafe for RewriteStats
impl Send for RewriteStats
impl Sync for RewriteStats
impl Unpin for RewriteStats
impl UnsafeUnpin for RewriteStats
impl UnwindSafe for RewriteStats
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more