class
Session::ClusteredRedisStore(T)
- Session::ClusteredRedisStore(T)
- Session::Store(T)
- Reference
- Object
Overview
A Redis store with local caching and cluster-wide invalidation via pub/sub
This store wraps RedisStore to provide:
- Local caching layer for reduced Redis load
- Pub/sub invalidation for multi-node deployments
- Automatic cache warming on miss
- Cluster-aware operations
Example:
Session.configure do |config|
config.cluster.enabled = true
config.cluster.node_id = ENV["NODE_ID"]? || UUID.random.to_s
config.store = Session::ClusteredRedisStore(UserSession).new(
client: Redis.new(host: "redis.example.com")
)
end
Included Modules
Defined in:
stores/clustered_redis_store.crConstructors
Instance Method Summary
-
#[](key : String) : T
Core store operations
- #[]=(key : String, session : T) : T
- #[]?(key : String) : T | Nil
-
#all_session_ids : Array(String)
Get all session IDs
-
#bulk_delete(&predicate : T -> Bool) : Int64
Delete all sessions matching a predicate
-
#cache_stats : LocalCache::CacheStats
Get local cache statistics
- #circuit_breaker : CircuitBreaker | Nil
- #clear
- #coordinator : ClusterCoordinator(T)
- #delete(key : String)
-
#each_session(&block : T -> Nil) : Nil
Iterate over all sessions matching a predicate
-
#evict_from_cache(key : String) : Bool
Manually evict a session from the local cache (useful for testing)
-
#healthy? : Bool
Health check for the underlying Redis store
- #redis_store : RedisStore(T)
-
#shutdown
Graceful shutdown - stops coordinator and closes Redis connection
- #size : Int64
-
#storage : String
Storage abstraction - must be implemented by subclasses
Instance methods inherited from module Session::QueryableStore(T)
all_session_ids : Array(String)
all_session_ids,
bulk_delete(&predicate : T -> Bool) : Int64
bulk_delete,
count_by(&predicate : T -> Bool) : Int64
count_by,
each_session(&block : T -> Nil) : Nil
each_session,
find_by(&predicate : T -> Bool) : Array(T)
find_by,
find_first(&predicate : T -> Bool) : T | Nil
find_first
Instance methods inherited from class Session::Store(T)
[](key : String) : T
[],
[]=(key : String, session : T) : T
[]=,
[]?(key : String) : T | Nil
[]?,
authenticate(& : T -> _) : T
authenticate,
build_cookie(name : String, value : String, host : String = "") : HTTP::Cookie
build_cookie,
clear
clear,
create : T
create,
create_session_cookie(host : String) : HTTP::Cookie
create_session_cookie,
current_session : T
current_session,
current_session=(current_session : T)
current_session=,
current_session? : T | Nil
current_session?,
delete(key : String)delete delete, encrypts_with_secret? : Bool encrypts_with_secret?, flash : Flash flash, load_from(request_cookies : HTTP::Cookies) : T | Nil load_from, on(event : Symbol, session_id : String, session : T) on, regenerate_id : T regenerate_id, release : Nil release, session_id : String session_id, session_key session_key, set_cookies(response_cookies : HTTP::Cookies, host : String = "") : Nil set_cookies, size : Int64 size, storage : String storage, timeout timeout, valid? : Bool valid?
Constructor Detail
Instance Method Detail
def all_session_ids : Array(String)
#
Description copied from module Session::QueryableStore(T)
Get all session IDs
def bulk_delete(&predicate : T -> Bool) : Int64
#
Description copied from module Session::QueryableStore(T)
Delete all sessions matching a predicate
def each_session(&block : T -> Nil) : Nil
#
Description copied from module Session::QueryableStore(T)
Iterate over all sessions matching a predicate
def evict_from_cache(key : String) : Bool
#
Manually evict a session from the local cache (useful for testing)
def storage : String
#
Description copied from class Session::Store(T)
Storage abstraction - must be implemented by subclasses