Sha256: 266d5f3ac69c482111ec0a586699a024d624d587d927642e903f9df034e352d5

Contents?: true

Size: 1.23 KB

Versions: 16

Compression:

Stored size: 1.23 KB

Contents

require 'active_support/cache'
require 'lz4-ruby'

module Wovnrb
  class MemoryCache < CacheBase
    @@default_memory_cache_config = {
      cache_megabytes: 200,
      ttl_seconds: 300
    }

    def initialize(config)
      @config = merge_setting(@@default_memory_cache_config, config)
      cache_size = @config[:cache_megabytes].to_f
      ttl = @config[:ttl_seconds].to_i
      @cache_store = ActiveSupport::Cache::MemoryStore.new(expires_in: ttl.seconds, size: cache_size.megabytes)
    end

    def put(key, value)
      @cache_store.write(key, compress(value))
    end

    def get(key)
      stored_value =@cache_store.fetch(key)
      decompress(stored_value) if stored_value
    end

    def options
      @cache_store.options.clone
    end

    private
    def merge_setting(original_config, merging_config)
      config = original_config.clone
      config.keys.each do |key|
        key_string = key.to_s
        if merging_config.has_key?(key_string) && merging_config[key_string].present?
          config[key] = merging_config[key_string]
        end
      end
      config
    end

    def compress(value)
      LZ4.compress(value)
    end

    def decompress(value)
      LZ4.decompress(value, value.bytesize, 'UTF-8')
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
wovnrb-3.0.1 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-3.0.0 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.6.0 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.5.1 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.2.4 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.2.3 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.2.2 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.2.1 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.2.0 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.1.0 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.0.5 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.0.4 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.0.3 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.0.2 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.0.1 lib/wovnrb/text_caches/memory_cache.rb
wovnrb-2.0.0 lib/wovnrb/text_caches/memory_cache.rb