Sha256: e0e022eb4791c15d7ce1eb5d5834ba5b4fbeeaaaeaf4b0126a8fa87a6ba7c672
Contents?: true
Size: 1.02 KB
Versions: 3
Compression:
Stored size: 1.02 KB
Contents
# frozen_string_literal: true class Cistern::Data::Redis Cistern::Data.backends[:redis] = self def self.marshal @marshal ||= begin require 'multi_json' MultiJson rescue LoadError require 'json' ::JSON end end class << self attr_writer :marshal end def initialize(options = {}, &block) @client = options[:client] || ::Redis.new @default = block end def clear unless (keys = client.keys('*')).empty? client.del(*keys) end end def store(key, value, *args) assign_default(key) client.set(key, Cistern::Data::Redis.marshal.dump(value), *args) end alias_method :[]=, :store def fetch(key, *args) assign_default(key) Cistern::Data::Redis.marshal.load(client.get(key, *args)) end alias_method :[], :fetch protected attr_reader :client, :default def assign_default(key) default.call(client, key) if client.keys(key).empty? && default end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
cistern-2.10.0 | lib/cistern/data/redis.rb |
cistern-2.8.2 | lib/cistern/data/redis.rb |
cistern-2.8.1 | lib/cistern/data/redis.rb |