dude
Version, currently 0.4.016 versions
- 3.2.2latestSep 3, 2026
- 3.2.1Jul 6, 2026
- 3.2.0not indexedAug 9, 2026
- 3.1.0not indexedAug 9, 2026
- 3.0.2not indexedAug 9, 2026
- 3.0.1not indexedAug 9, 2026
- 3.0.0not indexedAug 9, 2026
- 2.0.0not indexedAug 9, 2026
- 1.0.0not indexedAug 9, 2026
- 0.7.0not indexedAug 9, 2026
- 0.6.0not indexedAug 9, 2026
- 0.5.0not indexedAug 9, 2026
- 0.4.0not indexedAug 9, 2026
- 0.3.0not indexedAug 9, 2026
- 0.2.0not indexedAug 9, 2026
- 0.1.0not indexedAug 9, 2026
github.com/GrottoPress/dude
A dead simple Redis cache
Nothing has been indexed for 0.4.0 yet. The tag is recorded, its shard.yml has not been read, so the manifest and dependency list below are empty because they are unknown rather than because they are absent.
Installation
# Add this to your shard.yml
dependencies:
dude:
github: GrottoPress/dude
version: ~> 0.4.0Then run:
shards installshard.yml
No shard.yml has been indexed for 0.4.0. You can read it on the repository.
Dependencies
Unknown: the shard.yml for this version has not been read yet.
README
This README is the one indexed from the repository at its latest ref, not from the tag for this version.
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 #pg: # Uncomment if using the Posgres backend # github: will/crystal-pg -
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(ENV["REDIS_URL"], namespace: "dude") end # ... -
Using the Postgres backend
# ->>> src/app/config.cr # ... require "dude/postgres" Dude.configure do |settings| # ... settings.store = Dude::Postgres.new(ENV["DATABASE_URL"], namespace: "dude") # OR pass an existing `DB::Database` instance #settings.store = Dude::Postgres.new(db, namespace: "dude") # ... end # You may use this in your app's migrations to migrate Dude.postgres.migrate_database # You may use this in your app's migrations to roll back #Dude.postgres.rollback_database # ... -
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.storetonil(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:
#!/usr/bin/env bash
export COCKROACH_URL='postgres://root@localhost:26257/dude_spec?sslmode=disable'
export POSTGRES_URL='postgres://postgres:password@localhost:5432/dude_spec'
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
masterbranch: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:masterbranch.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.4.0- Tagged
- Aug 9, 2026
- Commit
21d98fd883e9- Indexed
- not yet
Dependents
Repository
github.com/GrottoPress/dude
Metadata
- Created
- Aug 12, 2026
- Updated
- Oct 12, 2026
- Synced
- Oct 12, 2026
- Versions
- 16