Struct forceps::evictors::FifoEvictor [−][src]
pub struct FifoEvictor { /* fields omitted */ }
Expand description
First-in-first-out eviction algorithm for a Cache
This algorithm will evict items in a Cache
in the order that they were originally written
to the cache, so the first entry will be the first removed. It will stop evicting items when a
certain minimum total size is met.
O(?) & Async
This eviction algorithm has no guarantee on being fast or efficient at all. It is expected that this algorithm is called infrequently, only when absolutely needed.
This algorithm also contains blocking calls in an async
context, mainly metadata iterations
and lookups. The reason for the async
context is for the actual removals from cache.
Configuration
Minimum Size
This is the minimum size that the cache must shrink to until the eviction algorithm will stop evicting items.
Batch Size
To create one batch, an entire iteration over the metadata must be performed. However, smaller values means that there is less checking/sorting for each batch found. Higher values should be used if you’re expecting to evict more items at a time.
Examples
use forceps::{Cache, evictors::FifoEvictor}; let cache = Cache::new("./cache") .build() .await?; const MIN_SIZE: u64 = 512 * 1024 * 1024; // 512MiB // Option 1: cache.evict_with(FifoEvictor::new(MIN_SIZE).set_batch_size(500)).await?; // Option 2: use forceps::evictors::Evictor; FifoEvictor::new(MIN_SIZE).set_batch_size(500).evict(&cache).await?;
Implementations
impl FifoEvictor
[src]
impl FifoEvictor
[src]pub fn new(min_size: u64) -> Self
[src]
pub fn new(min_size: u64) -> Self
[src]Creates a new instance of FifoEvictor
that will evict items to min_size
bytes.
pub fn set_batch_size(self, size: usize) -> Self
[src]
pub fn set_batch_size(self, size: usize) -> Self
[src]Sets the batch size for the evictor
Larger numbers generally increase performance on larger evictions, but decrease performance
on smaller evictions. Read FifoEvictor
documentation for more information.
Default is 250
Trait Implementations
impl Clone for FifoEvictor
[src]
impl Clone for FifoEvictor
[src]fn clone(&self) -> FifoEvictor
[src]
fn clone(&self) -> FifoEvictor
[src]Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]Performs copy-assignment from source
. Read more
impl Debug for FifoEvictor
[src]
impl Debug for FifoEvictor
[src]impl Evictor for FifoEvictor
[src]
impl Evictor for FifoEvictor
[src]type Err = ForcepError
type Err = ForcepError
The error type that the evict
method will produce.
Auto Trait Implementations
impl RefUnwindSafe for FifoEvictor
impl Send for FifoEvictor
impl Sync for FifoEvictor
impl Unpin for FifoEvictor
impl UnwindSafe for FifoEvictor
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> Pointable for T
impl<T> Pointable for T
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,