class RedisBrowser::Browser
Public Class Methods
new(conn = {})
click to toggle source
# File lib/redis-browser/browser.rb, line 3 def initialize(conn = {}) @conn = conn end
Public Instance Methods
delete(pattern)
click to toggle source
# File lib/redis-browser/browser.rb, line 109 def delete(pattern) redis.del(redis.keys(pattern)) end
get(key, opts = {})
click to toggle source
# File lib/redis-browser/browser.rb, line 113 def get(key, opts = {}) type = redis.type(key) data = case type when "string" type, value = item_type(redis.get(key)) {:value => value, :type => type} when "list" get_list(key, opts) when "set" get_set(key) when "zset" get_zset(key) when "hash" get_hash(key) else get_keys(key) end { :full => key, :type => type }.merge(data) end
get_hash(key)
click to toggle source
# File lib/redis-browser/browser.rb, line 89 def get_hash(key) value = Hash[redis.hgetall(key).map do |k,v| type, value = item_type(v) [k, {:type => type, :value => value}] end] {:value => value} end
get_keys(key)
click to toggle source
# File lib/redis-browser/browser.rb, line 98 def get_keys(key) key ||= "" key << "*" unless key.end_with?("*") values = redis.keys(key).map do |k| {:name => k, :full => k} end {:values => values} end
get_list(key, opts = {})
click to toggle source
# File lib/redis-browser/browser.rb, line 58 def get_list(key, opts = {}) start = opts[:start] ? opts[:start].to_i : 0 stop = opts[:stop] ? opts[:stop].to_i : 99 length = redis.llen(key) values = redis.lrange(key, start, stop).map.with_index do |e, i| type, value = item_type(e) {:type => type, :value => value, :index => start + i} end {:length => length, :values => values} end
get_set(key)
click to toggle source
# File lib/redis-browser/browser.rb, line 71 def get_set(key) values = redis.smembers(key).map do |e| type, value = item_type(e) {:type => type, :value => value} end {:values => values } end
get_zset(key)
click to toggle source
# File lib/redis-browser/browser.rb, line 80 def get_zset(key) values = redis.zrange(key, 0, -1, :withscores => true).map do |e, score| type, value = item_type(e) {:type => type, :value => value, :score => score} end {:values => values } end
item_type(e)
click to toggle source
# File lib/redis-browser/browser.rb, line 50 def item_type(e) begin ["json", MultiJson.decode(e)] rescue MultiJson::LoadError ["string", e] end end
keys(namespace = nil)
click to toggle source
# File lib/redis-browser/browser.rb, line 17 def keys(namespace = nil) begin if namespace.to_s.strip.empty? pattern = "*" namespace = "" else pattern = namespace + "*" end rescue ArgumentError pattern, namespace = "*", "" end redis.keys(pattern).inject({}) do |acc, key| key.slice!(namespace) if namespace ns, sep = split_key(key) begin unless ns.strip.empty? acc[ns] ||= { :name => ns, :full => namespace + ns + sep.to_s, :count => 0 } acc[ns][:count] += 1 end rescue ArgumentError end acc end.values.sort_by {|e| e[:name] } end
ping()
click to toggle source
# File lib/redis-browser/browser.rb, line 137 def ping redis.ping == "PONG" {:ok => 1} rescue => ex {:error => ex.message} end
redis()
click to toggle source
# File lib/redis-browser/browser.rb, line 144 def redis @redis ||= begin r = Redis.new(@conn) auth = @conn['auth'] r.auth(auth) if auth r end end
split_key(key)
click to toggle source
# File lib/redis-browser/browser.rb, line 7 def split_key(key) if key =~ /^(.+?)(:+|\/+|\.+).+$/ [$1, $2] else [key, nil] end rescue ArgumentError [key, nil] end