Table of Contents

Interface IBlobCache

Namespace
Akavache
Assembly
Akavache.Core.dll

IBlobCache is the core interface on which Akavache is built, it is an interface describing an asynchronous persistent key-value store.

public interface IBlobCache : IDisposable
Inherited Members
Extension Methods
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)

Properties

ForcedDateTimeKind

Gets or sets the DateTimeKind handling for BSON readers to be forced.

DateTimeKind? ForcedDateTimeKind { get; set; }

Property Value

DateTimeKind?

Remarks

By default, Newtonsoft.Json.Bson.BsonReader uses a DateTimeKind of Local and Newtonsoft.Json.Bson.BsonWriter uses Utc. Thus, DateTimes are serialized as UTC but deserialized as local time. To force BSON readers to use some other DateTimeKind, you can set this value.

Scheduler

Gets the IScheduler used to defer operations. By default, this is BlobCache.TaskpoolScheduler.

IScheduler Scheduler { get; }

Property Value

IScheduler

Shutdown

Gets an Observable that fires after the Dispose completes successfully, since there is no such thing as an AsyncDispose().

IObservable<Unit> Shutdown { get; }

Property Value

IObservable<Unit>

Methods

Flush()

This method guarantees that all in-flight inserts have completed and any indexes have been written to disk.

IObservable<Unit> Flush()

Returns

IObservable<Unit>

A signal indicating when the flush is complete.

Get(string)

Retrieve a value from the key-value cache. If the key is not in the cache, this method should return an IObservable which OnError's with KeyNotFoundException.

IObservable<byte[]> Get(string key)

Parameters

key string

The key to return asynchronously.

Returns

IObservable<byte[]>

A Future result representing the byte data.

GetAllKeys()

Return all keys in the cache. Note that this method is normally for diagnostic / testing purposes, and that it is not guaranteed to be accurate with respect to in-flight requests.

IObservable<IEnumerable<string>> GetAllKeys()

Returns

IObservable<IEnumerable<string>>

A list of valid keys for the cache.

GetCreatedAt(string)

Returns the time that the key was added to the cache, or returns null if the key isn't in the cache.

IObservable<DateTimeOffset?> GetCreatedAt(string key)

Parameters

key string

The key to return the date for.

Returns

IObservable<DateTimeOffset?>

The date the key was created on.

Insert(string, byte[], DateTimeOffset?)

Insert a blob into the cache with the specified key and expiration date.

IObservable<Unit> Insert(string key, byte[] data, DateTimeOffset? absoluteExpiration = null)

Parameters

key string

The key to use for the data.

data byte[]

The data to save in the cache.

absoluteExpiration DateTimeOffset?

An optional expiration date. After the specified date, the key-value pair should be removed.

Returns

IObservable<Unit>

A signal to indicate when the key has been inserted.

Invalidate(string)

Remove a key from the cache. If the key doesn't exist, this method should do nothing and return (not throw KeyNotFoundException).

IObservable<Unit> Invalidate(string key)

Parameters

key string

The key to remove from the cache.

Returns

IObservable<Unit>

A signal indicating when the invalidate is complete.

InvalidateAll()

Invalidate all entries in the cache (i.e. clear it). Note that this method is blocking and incurs a significant performance penalty if used while the cache is being used on other threads.

IObservable<Unit> InvalidateAll()

Returns

IObservable<Unit>

A signal indicating when the invalidate is complete.

Vacuum()

This method eagerly removes all expired keys from the blob cache, as well as does any cleanup operations that makes sense (Hint: on SQLite3 it does a Vacuum).

IObservable<Unit> Vacuum()

Returns

IObservable<Unit>

A signal indicating when the operation is complete.