Popularity
1.8
Growing
Activity
0.0
Stable
73
2
3

Programming language: Swift
License: MIT License
Tags: Cache    
Latest version: v1.1.0

MemoryCache alternatives and similar libraries

Based on the "Cache" category.
Alternatively, view MemoryCache alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of MemoryCache or a related project?

Add another 'Cache' Library

README

MemoryCache

CI Status codecov Version License Platform

Overview

MemoryCache is a memory cache class in swift.

  • The MemoryCache class incorporates LRU policies, which ensure that a cache doesn’t use too much of the system’s memory. If memory is needed by other applications, it removes some items from the cache, minimizing its memory footprint.
  • You can add, remove, and query items with expiration in the cache from different threads without having to lock the cache yourself. ( thread-safe )
  • Unlike the NSCache class, the cache guarantees a type by its key. ( type-safe )
let memoryCache = MemoryCache.default // or initialize

// Defining a string (or hash) key for a dog value.
let dogKey = StringKey<Dog>("dog")

// Setting a dog value in memoryCache.
memoryCache.set(dog, for: dogKey)

// Getting a cached dog value in memoryCache.
let cachedDog = try? memoryCache.value(for: dogKey)

// Removing a cached dog value in memoryCache.
memoryCache.remove(for: dogKey)

Usage

Basic

Defining keys

let dogKey = StringKey<Dog>("dog")

Adding a Cached Value

memoryCache.set(dog, for: dogKey)

Getting a Cached Value

let dog = try? memoryCache.value(for: dogKey)

Removing Cached Values

  • Removes the cache of the specified key.

    memoryCache.remove(for: dogKey)
    
  • Removes the cache of the specified key if it expired.

    memoryCache.removeIfExpired(for: dogKey)
    
  • Removes All.

    memoryCache.removeAll()
    

Others

Properties

/// The maximum total cost that the memoryCache can hold before it starts evicting caches.
var totalCostLimit: Int

/// The maximum number of caches the memoryCache should hold.
var countLimit: Int

/// The total cost of values in the memoryCache.
var totalCost: Int

/// The number of values in the memoryCache.
var count: Int

/// A Boolean value indicating whether the memoryCache has no values.
var isEmpty: Bool

Implement delegate

import MemoryCache

class SomeClass: NSObject, MemoryCacheDelegate {

    let memoryCache: MemoryCache

    init() {
        memoryCache = MemoryCache.default

        ...

        super.init()

        memoryCache.delegate = self
    }

    func memoryCache(_ memoryCache: MemoryCache, willEvict cache: Any) {
        // Called when an cache is about to be evicted or removed from the memoryCache.
    }
}

Expiration date

You can specify expiration date for cache. The default expiration is .never.

/// The expiration date is `.never`.
memoryCache.set(dog, for: dogKey, expiration: .never)

/// The expiration date is `.seconds("""10s""")`.
memoryCache.set(dog, for: dogKey, expiration: .seconds(10))

/// The expiration date is `.date("""TOMORROW""")`.
memoryCache.set(dog, for: dogKey, expiration: .date(Date().addingTimeInterval(60 * 60 * 24)))

/// Remove the cache of the specified key if it expired.
memoryCache.removeIfExpired(for: dogKey)

Requirements

  • Swift 4.2 ~
  • Xcode 10.1 ~

Installation

CocoaPods

MemoryCache is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'MemoryCache'

Carthage

You can integrate via Carthage, too. Add the following line to your Cartfile :

github "yysskk/MemoryCache"

and run carthage update

Author

Yusuke Morishita

Support via PayPal

License

MemoryCache is available under the MIT license. See the [LICENSE](./LICENSE) file for more info.


*Note that all licence references and agreements mentioned in the MemoryCache README section above are relevant to that project's source code only.