Dude
Dude is a dead simple Redis cache that supports multiple storage backends.
Installation
-
Add the dependency to your
shard.yml
:dependencies: dude: github: GrottoPress/dude #redis: # Uncomment if using the Redis backend # github: jgaskins/redis
-
Run
shards update
-
Require and configure Dude:
-
Using the Redis backend
# ->>> src/app/config.cr # ... require "dude/redis" Dude.configure do |settings| settings.store = Dude::Redis.new( "redis://localhost:6379/0", namespace: "dude" ) end # ...
-
Using the Memory backend
# ->>> src/app/config.cr # ... require "dude" Dude.configure do |settings| settings.store = Dude::Memory.new end # ...
-
Skip caching
You may disable cache altogether by setting
Dude.settings.store
tonil
(This is the default).
-
Usage
-
Fetch raw value from cache
# Sets and returns block if key not found in cache Dude.get("key", 1.minute) { "value" } # => `value`
-
Fetch JSON-serializable value from cache
struct User include JSON::Serializable getter id : Int32 def initialize(@id) end end # Sets and returns block if key not found in cache Dude.get(User, "key", 1.minute) { User.new(2) } # => `User(@id=2)`
-
Perform multiple operations using a transaction
Dude.transaction do |store| Dude.set("key_1", "value1", 1.minute, store) Dude.set("key_2", "value2", 3.minutes, store) Dude.delete("key_3", store) end
Development
Create a .env.sh
file:
#!/bin/bash
export REDIS_URL='redis://localhost:6379/0'
Update the file with your own details. Then run tests with source .env.sh && crystal spec
.
Contributing
- Fork it
- Switch to the
master
branch:git checkout master
- Create your feature branch:
git checkout -b my-new-feature
- Make your changes, updating changelog and documentation as appropriate.
- Commit your changes:
git commit
- Push to the branch:
git push origin my-new-feature
- Submit a new Pull Request against the
GrottoPress:master
branch.