Programming language: Go
Tags: Go Tools     Cache     Redis     Go     Golang     Dependencies     Lock     Redigo    
Latest version: v0.1.7

MrZ's go-cache alternatives and similar packages

Based on the "Go Tools" category

Do you think we are missing an alternative of MrZ's go-cache or a related project?

Add another 'Go Tools' Package



Simple cache dependency system on-top of the famous redigo package

Release Build Status Report codecov Go Sponsor Donate

Table of Contents


go-cache requires a supported release of Go and redis. ```shell script go get -u github.com/mrz1836/go-cache


## Documentation
View the generated [documentation](https://pkg.go.dev/github.com/mrz1836/go-cache?tab=doc)


### Features
- Cache Dependencies Between Keys (toggle functionality)
- Connect via URL
- Better Pool Management & Creation
- Register Scripts
- Helper Methods (Get, Set, HashGet, etc)
- Basic Lock/Release (from [bgentry lock.go](https://gist.github.com/bgentry/6105288))

<summary><strong><code>Library Deployment</code></strong></summary>

[goreleaser](https://github.com/goreleaser/goreleaser) for easy binary or library deployment to Github and can be installed via: `brew install goreleaser`.

The [.goreleaser.yml](.goreleaser.yml) file is used to configure [goreleaser](https://github.com/goreleaser/goreleaser).

Use `make release-snap` to create a snapshot version of the release, and finally `make release` to ship to production.

<summary><strong><code>Makefile Commands</code></strong></summary>

View all `makefile` commands
```shell script
make help

List of all current commands:

all                    Runs multiple commands
clean                  Remove previous builds and any test cache data
clean-mods             Remove all the Go mod cache
coverage               Shows the test coverage
godocs                 Sync the latest tag with GoDocs
help                   Show this help message
install                Install the application
install-go             Install the application (Using Native Go)
lint                   Run the Go lint application
release                Full production release (creates release in Github)
release                Runs common.release then runs godocs
release-snap           Test the full release (build binaries)
release-test           Full production test release (everything except deploy)
replace-version        Replaces the version in HTML/JS (pre-deploy)
run-examples           Runs all the examples
tag                    Generate a new tag and push (tag version=0.0.0)
tag-remove             Remove a tag if found (tag-remove version=0.0.0)
tag-update             Update an existing tag to current commit (tag-update version=0.0.0)
test                   Runs vet, lint and ALL tests
test-short             Runs vet, lint and tests (excludes integration tests)
test-travis            Runs all tests via Travis (also exports coverage)
test-travis-short      Runs unit tests via Travis (also exports coverage)
uninstall              Uninstall the application (and remove files)
vet                    Run the Go vet application

Package Dependencies

Examples & Tests

All unit tests and [examples](examples/examples.go) run via Travis CI and uses Go version 1.14.x. View the [deployment configuration file](.travis.yml).

Run all tests (including integration tests) ```shell script make test

Run tests (excluding integration tests)
```shell script
make test-short

Run the [examples](examples/examples.go): ```shell script make run-examples


## Benchmarks
Run the Go benchmarks:
```shell script
make bench

Code Standards

Read more about this Go project's [code standards](CODE_STANDARDS.md).


View the [examples](examples/examples.go)

Basic implementation:

package main

import (


func main() {

    // Create the pool and first connection
    _ = cache.Connect("redis://localhost:6379", 0, 10, 0, 240, true, redis.DialKeepAlive(10*time.Second))

    // Set a key
    _ = cache.Set("key-name", "the-value", "dependent-key-1", "dependent-key-2")

    // Get a key
    value, _ := cache.Get("key-name")
    log.Println("Got value:", value)
    // Output: Got Value: the-value

    // Kill keys by dependency
    keys, _ := cache.KillByDependency("dependent-key-1")
    log.Println("Keys Removed:", keys)
    // Output: Keys Removed: 2


MrZ kayleg


View the [contributing guidelines](CONTRIBUTING.md) and follow the [code of conduct](CODE_OF_CONDUCT.md).

How can I help?

All kinds of contributions are welcome :raised_hands:! The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:. You can also support this project by becoming a sponsor on GitHub :clap: or by making a bitcoin donation to ensure this journey continues indefinitely! :rocket:



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