Cache::RedisCacheStore
A cache store implementation that stores data in Redis.
This shard using jgaskins/redis as Redis client library.
If you're looking for an implementation that uses stefanwille/crystal-redis check https://github.com/crystal-cache/redis_legacy_cache_store.
Installation
-
Add the dependency to your
shard.yml
:dependencies: redis_cache_store: github: crystal-cache/redis_cache_store
-
Run
shards install
Usage
require "redis_cache_store"
It's important to note that Redis cache value must be string.
cache = Cache::RedisCacheStore(String, String).new(expires_in: 1.minute, namespace: "myapp-cache")
# Fetches data from the Redis, using "myapp-cache:today" key. If there is data in
# the Redis with the given key, then that data is returned.
#
# If there is no such data in the Redis (a cache miss or expired), then
# block will be written to the Redis under the given cache key, and that
# return value will be returned.
cache.fetch("today") do
Time.utc.day_of_week
end
# => Wednesday
No namespace
is set by default. Provide one if the Redis cache
server is shared with other apps:
This assumes Redis was started with a default configuration, and is listening on localhost, port 6379.
You can connect to Redis by instantiating the Redis::Client
class.
If you need to connect to a remote server or a different port, try:
redis_uri = URI.parse("rediss://:[email protected]:6380/1")
redis = Redis::Client.new(uri: redis_uri)
cache = Cache::RedisCacheStore(String, String).new(expires_in: 1.minute, cache: redis)
Contributing
- Fork it (https://github.com/crystal-cache/redis_cache_store/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- Anton Maminov - creator and maintainer