userver: cache::NWayLRU< T, U, Hash, Equal > Class Template Reference
Loading...
Searching...
No Matches
cache::NWayLRU< T, U, Hash, Equal > Class Template Referencefinal

Detailed Description

template<typename T, typename U, typename Hash = std::hash<T>, typename Equal = std::equal_to<T>>
class cache::NWayLRU< T, U, Hash, Equal >

Definition at line 21 of file nway_lru_cache.hpp.

Public Member Functions

 NWayLRU (size_t ways, size_t way_size, const Hash &hash=Hash(), const Equal &equal=Equal())
 
void Put (const T &key, U value)
 
template<typename Validator >
std::optional< U > Get (const T &key, Validator validator)
 
std::optional< U > Get (const T &key)
 
GetOr (const T &key, const U &default_value)
 
void Invalidate ()
 
void InvalidateByKey (const T &key)
 
template<typename Function >
void VisitAll (Function func) const
 Iterates over all items. May be slow for big caches.
 
size_t GetSize () const
 
void UpdateWaySize (size_t way_size)
 
void Write (dump::Writer &writer) const
 
void Read (dump::Reader &reader)
 
void SetDumper (std::shared_ptr< dump::Dumper > dumper)
 

Constructor & Destructor Documentation

◆ NWayLRU()

template<typename T , typename U , typename Hash = std::hash<T>, typename Equal = std::equal_to<T>>
cache::NWayLRU< T, U, Hash, Eq >::NWayLRU ( size_t ways,
size_t way_size,
const Hash & hash = Hash(),
const Equal & equal = Equal() )
Parameters
waysis the number of ways (a.k.a. shards, internal hash-maps), into which elements are distributed based on their hash. Each shard is protected by an individual mutex. Larger ways means more internal hash-map instances and more memory usage, but less contention. A good starting point is ways=16. If you encounter contention, you can increase ways to something on the order of 256 or whatever your RAM constraints allow.
way_sizeis the maximum allowed amount of elements per way. When the size of a way reaches this number, existing elements are deleted according to the LRU policy.

The maximum total number of elements is ways * way_size.

Definition at line 92 of file nway_lru_cache.hpp.

Member Function Documentation

◆ Get() [1/2]

template<typename T , typename U , typename Hash = std::hash<T>, typename Equal = std::equal_to<T>>
std::optional< U > cache::NWayLRU< T, U, Hash, Equal >::Get ( const T & key)
inline

Definition at line 44 of file nway_lru_cache.hpp.

◆ Get() [2/2]

template<typename T , typename U , typename Hash , typename Eq >
template<typename Validator >
std::optional< U > cache::NWayLRU< T, U, Hash, Eq >::Get ( const T & key,
Validator validator )

Definition at line 114 of file nway_lru_cache.hpp.

◆ GetOr()

template<typename T , typename U , typename Hash , typename Eq >
U cache::NWayLRU< T, U, Hash, Eq >::GetOr ( const T & key,
const U & default_value )

Definition at line 139 of file nway_lru_cache.hpp.

◆ GetSize()

template<typename T , typename U , typename Hash , typename Eq >
size_t cache::NWayLRU< T, U, Hash, Eq >::GetSize ( ) const

Definition at line 164 of file nway_lru_cache.hpp.

◆ Invalidate()

template<typename T , typename U , typename Hash , typename Eq >
void cache::NWayLRU< T, U, Hash, Eq >::Invalidate ( )

Definition at line 146 of file nway_lru_cache.hpp.

◆ InvalidateByKey()

template<typename T , typename U , typename Hash , typename Eq >
void cache::NWayLRU< T, U, Hash, Eq >::InvalidateByKey ( const T & key)

Definition at line 129 of file nway_lru_cache.hpp.

◆ Put()

template<typename T , typename U , typename Hash , typename Eq >
void cache::NWayLRU< T, U, Hash, Eq >::Put ( const T & key,
U value )

Definition at line 103 of file nway_lru_cache.hpp.

◆ Read()

template<typename T , typename U , typename Hash , typename Equal >
void cache::NWayLRU< T, U, Hash, Equal >::Read ( dump::Reader & reader)

Definition at line 211 of file nway_lru_cache.hpp.

◆ SetDumper()

template<typename T , typename U , typename Hash , typename Equal >
void cache::NWayLRU< T, U, Hash, Equal >::SetDumper ( std::shared_ptr< dump::Dumper > dumper)

The dump::Dumper will be notified of any cache updates. This method is not thread-safe.

Definition at line 233 of file nway_lru_cache.hpp.

◆ UpdateWaySize()

template<typename T , typename U , typename Hash , typename Eq >
void cache::NWayLRU< T, U, Hash, Eq >::UpdateWaySize ( size_t way_size)

For the description of way_size, see the cache::NWayLRU::NWayLRU constructor.

Definition at line 174 of file nway_lru_cache.hpp.

◆ VisitAll()

template<typename T , typename U , typename Hash , typename Eq >
template<typename Function >
void cache::NWayLRU< T, U, Hash, Eq >::VisitAll ( Function func) const

Iterates over all items. May be slow for big caches.

Definition at line 156 of file nway_lru_cache.hpp.

◆ Write()

template<typename T , typename U , typename Hash , typename Equal >
void cache::NWayLRU< T, U, Hash, Equal >::Write ( dump::Writer & writer) const

Definition at line 195 of file nway_lru_cache.hpp.


The documentation for this class was generated from the following file: