Skip to content

Instantly share code, notes, and snippets.

@tysonmote
Last active December 14, 2015 19:38
Show Gist options
  • Save tysonmote/5137619 to your computer and use it in GitHub Desktop.
Save tysonmote/5137619 to your computer and use it in GitHub Desktop.
This bit of Ruby gives you the canonical Redis command groupings in JavaScript (or JSON, if you prefer) directly from redis.io.
require 'mechanize'
require 'json'
commands = {}
groups = {}
groupLabels = {}
groupOrder = []
page = Mechanize.new.get "http://redis.io/commands"
page.search( "#commands li" ).each do |el|
group = el["data-group"]
command = el.search( ".command a" ).first.text.split(" ").first
commands[command] = group
groups[group] ||= []
groups[group] << command
end
page.search( "#commands nav a" ).each do |li|
group = li["href"].sub('#', '')
next unless group.size > 0
label = li.text
groupLabels[group] = label
groupOrder << group
end
puts <<-JS
RedisCommands = #{JSON.dump commands};
RedisCommandsByGroup = #{JSON.dump groups};
RedisCommandGroupLabels = #{JSON.dump groupLabels};
RedisCommandGroupOrder = #{JSON.dump groupOrder};
JS
// Sample output
RedisCommands = {"APPEND":"string","AUTH":"connection","BGREWRITEAOF":"server","BGSAVE":"server","BITCOUNT":"string","BITOP":"string","BLPOP":"list","BRPOP":"list","BRPOPLPUSH":"list","CLIENT":"server","CONFIG":"server","DBSIZE":"server","DEBUG":"server","DECR":"string","DECRBY":"string","DEL":"generic","DISCARD":"transactions","DUMP":"generic","ECHO":"connection","EVAL":"scripting","EVALSHA":"scripting","EXEC":"transactions","EXISTS":"generic","EXPIRE":"generic","EXPIREAT":"generic","FLUSHALL":"server","FLUSHDB":"server","GET":"string","GETBIT":"string","GETRANGE":"string","GETSET":"string","HDEL":"hash","HEXISTS":"hash","HGET":"hash","HGETALL":"hash","HINCRBY":"hash","HINCRBYFLOAT":"hash","HKEYS":"hash","HLEN":"hash","HMGET":"hash","HMSET":"hash","HSET":"hash","HSETNX":"hash","HVALS":"hash","INCR":"string","INCRBY":"string","INCRBYFLOAT":"string","INFO":"server","KEYS":"generic","LASTSAVE":"server","LINDEX":"list","LINSERT":"list","LLEN":"list","LPOP":"list","LPUSH":"list","LPUSHX":"list","LRANGE":"list","LREM":"list","LSET":"list","LTRIM":"list","MGET":"string","MIGRATE":"generic","MONITOR":"server","MOVE":"generic","MSET":"string","MSETNX":"string","MULTI":"transactions","OBJECT":"generic","PERSIST":"generic","PEXPIRE":"generic","PEXPIREAT":"generic","PING":"connection","PSETEX":"string","PSUBSCRIBE":"pubsub","PTTL":"generic","PUBLISH":"pubsub","PUNSUBSCRIBE":"pubsub","QUIT":"connection","RANDOMKEY":"generic","RENAME":"generic","RENAMENX":"generic","RESTORE":"generic","RPOP":"list","RPOPLPUSH":"list","RPUSH":"list","RPUSHX":"list","SADD":"set","SAVE":"server","SCARD":"set","SCRIPT":"scripting","SDIFF":"set","SDIFFSTORE":"set","SELECT":"connection","SET":"string","SETBIT":"string","SETEX":"string","SETNX":"string","SETRANGE":"string","SHUTDOWN":"server","SINTER":"set","SINTERSTORE":"set","SISMEMBER":"set","SLAVEOF":"server","SLOWLOG":"server","SMEMBERS":"set","SMOVE":"set","SORT":"generic","SPOP":"set","SRANDMEMBER":"set","SREM":"set","STRLEN":"string","SUBSCRIBE":"pubsub","SUNION":"set","SUNIONSTORE":"set","SYNC":"server","TIME":"server","TTL":"generic","TYPE":"generic","UNSUBSCRIBE":"pubsub","UNWATCH":"transactions","WATCH":"transactions","ZADD":"sorted_set","ZCARD":"sorted_set","ZCOUNT":"sorted_set","ZINCRBY":"sorted_set","ZINTERSTORE":"sorted_set","ZRANGE":"sorted_set","ZRANGEBYSCORE":"sorted_set","ZRANK":"sorted_set","ZREM":"sorted_set","ZREMRANGEBYRANK":"sorted_set","ZREMRANGEBYSCORE":"sorted_set","ZREVRANGE":"sorted_set","ZREVRANGEBYSCORE":"sorted_set","ZREVRANK":"sorted_set","ZSCORE":"sorted_set","ZUNIONSTORE":"sorted_set"};
RedisCommandsByGroup = {"string":["APPEND","BITCOUNT","BITOP","DECR","DECRBY","GET","GETBIT","GETRANGE","GETSET","INCR","INCRBY","INCRBYFLOAT","MGET","MSET","MSETNX","PSETEX","SET","SETBIT","SETEX","SETNX","SETRANGE","STRLEN"],"connection":["AUTH","ECHO","PING","QUIT","SELECT"],"server":["BGREWRITEAOF","BGSAVE","CLIENT","CLIENT","CLIENT","CLIENT","CONFIG","CONFIG","CONFIG","DBSIZE","DEBUG","DEBUG","FLUSHALL","FLUSHDB","INFO","LASTSAVE","MONITOR","SAVE","SHUTDOWN","SLAVEOF","SLOWLOG","SYNC","TIME"],"list":["BLPOP","BRPOP","BRPOPLPUSH","LINDEX","LINSERT","LLEN","LPOP","LPUSH","LPUSHX","LRANGE","LREM","LSET","LTRIM","RPOP","RPOPLPUSH","RPUSH","RPUSHX"],"generic":["DEL","DUMP","EXISTS","EXPIRE","EXPIREAT","KEYS","MIGRATE","MOVE","OBJECT","PERSIST","PEXPIRE","PEXPIREAT","PTTL","RANDOMKEY","RENAME","RENAMENX","RESTORE","SORT","TTL","TYPE"],"transactions":["DISCARD","EXEC","MULTI","UNWATCH","WATCH"],"scripting":["EVAL","EVALSHA","SCRIPT","SCRIPT","SCRIPT","SCRIPT"],"hash":["HDEL","HEXISTS","HGET","HGETALL","HINCRBY","HINCRBYFLOAT","HKEYS","HLEN","HMGET","HMSET","HSET","HSETNX","HVALS"],"pubsub":["PSUBSCRIBE","PUBLISH","PUNSUBSCRIBE","SUBSCRIBE","UNSUBSCRIBE"],"set":["SADD","SCARD","SDIFF","SDIFFSTORE","SINTER","SINTERSTORE","SISMEMBER","SMEMBERS","SMOVE","SPOP","SRANDMEMBER","SREM","SUNION","SUNIONSTORE"],"sorted_set":["ZADD","ZCARD","ZCOUNT","ZINCRBY","ZINTERSTORE","ZRANGE","ZRANGEBYSCORE","ZRANK","ZREM","ZREMRANGEBYRANK","ZREMRANGEBYSCORE","ZREVRANGE","ZREVRANGEBYSCORE","ZREVRANK","ZSCORE","ZUNIONSTORE"]};
RedisCommandGroupLabels = {"generic":"Keys","string":"Strings","hash":"Hashes","list":"Lists","set":"Sets","sorted_set":"Sorted Sets","pubsub":"Pub/Sub","transactions":"Transactions","scripting":"Scripting","connection":"Connection","server":"Server"};
RedisCommandGroupOrder = ["generic","string","hash","list","set","sorted_set","pubsub","transactions","scripting","connection","server"];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment