Sha256: 41bb6f942dde66bd2d3817700db136c3567898794aef3132097ccf6d25bb5f14

Contents?: true

Size: 1.53 KB

Versions: 9

Compression:

Stored size: 1.53 KB

Contents

# frozen_string_literal: true

module RedisWebManager
  class Data < Base
    BASE = 'RedisWebManager'

    def keys
      data.map { |key| JSON.parse(redis.get(key), symbolize_names: true) }
    end

    def perform
      now = Time.now.to_i
      seconds = (now + lifespan.to_i) - now
      redis.setex("#{BASE}_#{instance}_#{now}", seconds, serialize.to_json)
    end

    def flush
      data.map { |key| redis.del(key) }
    end

    private

    def data
      @data ||= redis.scan_each(match: "#{BASE}_#{instance}_*").to_a
    end

    def lifespan
      @lifespan ||= RedisWebManager.lifespan
    end

    def serialize
      {
        date: Time.now,
        memory: memory,
        client: client,
        cpu: cpu
      }
    end

    def memory
      {
        used_memory: stats[:used_memory],
        used_memory_rss: stats[:used_memory_rss],
        used_memory_peak: stats[:used_memory_peak],
        used_memory_overhead: stats[:used_memory_overhead],
        used_memory_startup: stats[:used_memory_startup],
        used_memory_dataset: stats[:used_memory_dataset]
      }
    end

    def client
      {
        connected_clients: stats[:connected_clients],
        blocked_clients: stats[:blocked_clients]
      }
    end

    def cpu
      {
        used_cpu_sys: stats[:used_cpu_sys],
        used_cpu_user: stats[:used_cpu_user],
        used_cpu_sys_children: stats[:used_cpu_sys_children],
        used_cpu_user_children: stats[:used_cpu_user_children]
      }
    end

    def stats
      @stats ||= redis.info.symbolize_keys
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
redis_web_manager-0.4.0 lib/redis_web_manager/data.rb
redis_web_manager-0.3.9 lib/redis_web_manager/data.rb
redis_web_manager-0.3.8 lib/redis_web_manager/data.rb
redis_web_manager-0.3.6 lib/redis_web_manager/data.rb
redis_web_manager-0.3.5 lib/redis_web_manager/data.rb
redis_web_manager-0.3.4 lib/redis_web_manager/data.rb
redis_web_manager-0.3.3 lib/redis_web_manager/data.rb
redis_web_manager-0.3.2 lib/redis_web_manager/data.rb
redis_web_manager-0.3.1 lib/redis_web_manager/data.rb