@@ -72,7 +72,7 @@ impl Storage for MapStorage {
7272}
7373
7474/// A storage wrapper that adds an LRU cache to an underlying storage.
75- /// Only getter methods are cached.
75+ /// Getter methods are not cached.
7676pub struct CachedStorage<S: Storage> {
7777 pub storage: S,
7878 pub cache: LruCache<DbKey, Option<DbValue>>,
@@ -228,14 +228,13 @@ impl<S: Storage> Storage for CachedStorage<S> {
228228 type Config = CachedStorageConfig<S::Config>;
229229
230230 async fn get(&mut self, key: &DbKey) -> PatriciaStorageResult<Option<DbValue>> {
231- if let Some(cached_value) = self.cache.get (key) {
231+ if let Some(cached_value) = self.cache.peek (key) {
232232 self.cached_reads.fetch_add(1, Ordering::Relaxed);
233233 return Ok(cached_value.clone());
234234 }
235235
236236 self.reads.fetch_add(1, Ordering::Relaxed);
237237 let storage_value = self.storage.get(key).await?;
238- self.cache.put(key.clone(), storage_value.clone());
239238 Ok(storage_value)
240239 }
241240
@@ -253,7 +252,7 @@ impl<S: Storage> Storage for CachedStorage<S> {
253252 let mut cached_reads = 0;
254253
255254 for (index, key) in keys.iter().enumerate() {
256- if let Some(cached_value) = self.cache.get (key) {
255+ if let Some(cached_value) = self.cache.peek (key) {
257256 values[index] = cached_value.clone();
258257 cached_reads += 1;
259258 } else {
@@ -267,12 +266,9 @@ impl<S: Storage> Storage for CachedStorage<S> {
267266 self.cached_reads.fetch_add(cached_reads, Ordering::Relaxed);
268267
269268 let fetched_values = self.storage.mget(keys_to_fetch.as_slice()).await?;
270- indices_to_fetch.iter().zip(keys_to_fetch).zip(fetched_values).for_each(
271- |((index, key), value)| {
272- self.cache.put((*key).clone(), value.clone());
273- values[*index] = value;
274- },
275- );
269+ indices_to_fetch.iter().zip(fetched_values).for_each(|(index, value)| {
270+ values[*index] = value;
271+ });
276272
277273 Ok(values)
278274 }
0 commit comments