redis-load 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +4 -0
 - data/README +64 -0
 - data/Rakefile +66 -0
 - data/bin/redis-load +114 -0
 - data/lib/redis-load.rb +7 -0
 - data/lib/redis-load/command_line.rb +71 -0
 - data/lib/redis-load/loader.rb +136 -0
 - data/tests/ts_redis-load.rb +2 -0
 - metadata +121 -0
 
    
        data/CHANGES
    ADDED
    
    
    
        data/README
    ADDED
    
    | 
         @@ -0,0 +1,64 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Utility for managing data structures in Redis, allowing lists, sets, etc to be populated by loading 
         
     | 
| 
      
 2 
     | 
    
         
            +
            data from flat files and JSON. Data structures can also be saved out to local files.
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            The rationale here was to provide some easy ways to persistent out the results of data manipulations from 
         
     | 
| 
      
 5 
     | 
    
         
            +
            Redis in easy to process formats. Similarly I also wanted to load data structures from files for use in Redis, 
         
     | 
| 
      
 6 
     | 
    
         
            +
            but where the original data has been created separately, e.g. by a map-reduce job.
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            == Author
         
     | 
| 
      
 9 
     | 
    
         
            +
             
         
     | 
| 
      
 10 
     | 
    
         
            +
            Leigh Dodds (leigh.dodds@talis.com)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            == Download
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            http://github.com/ldodds/redis-load
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            == Installation
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            redis-load is available as a gem:
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            sudo gem install redis-load
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            It has dependencies on the ruby redis library, json/pure and siren
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            If you grab a copy from github then there's an install target in the Rakefile that will build and install the gem
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            == Usage
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            The command-line app is called redis-load. You need to provide it with a file name and generally 
         
     | 
| 
      
 29 
     | 
    
         
            +
            a key to be populated:
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            Load the contents of a json file as entries into a server
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              redis-load load-json --file myfile.json
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            Load the contents of a file as key-value pairs. Must be: key,value
         
     | 
| 
      
 36 
     | 
    
         
            +
              
         
     | 
| 
      
 37 
     | 
    
         
            +
              redis-load load-keys --file mykeys.txt
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            Load the contents of a file into a list. Each line is a list entry
         
     | 
| 
      
 40 
     | 
    
         
            +
              	
         
     | 
| 
      
 41 
     | 
    
         
            +
              redis-load load-list --key mylist --file mylist.txt
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            Load the contents of a file into a set. Each line is a set entry
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              redis-load load-set --key myset --file myset.txt
         
     | 
| 
      
 46 
     | 
    
         
            +
              
         
     | 
| 
      
 47 
     | 
    
         
            +
            Load the contents of a file into a sort set. Each line is a key-value pair of entry,score  
         
     | 
| 
      
 48 
     | 
    
         
            +
              
         
     | 
| 
      
 49 
     | 
    
         
            +
              redis-load load-zset --key myzset --file myzset.txt
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            Save a list into a file
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              redis-load save-list --key mylist --file mylist.txt
         
     | 
| 
      
 54 
     | 
    
         
            +
              
         
     | 
| 
      
 55 
     | 
    
         
            +
            Save a set into a file
         
     | 
| 
      
 56 
     | 
    
         
            +
              
         
     | 
| 
      
 57 
     | 
    
         
            +
              redis-load save-set --key myset --file myset.txt
         
     | 
| 
      
 58 
     | 
    
         
            +
                
         
     | 
| 
      
 59 
     | 
    
         
            +
            Save a sorted set into a file
         
     | 
| 
      
 60 
     | 
    
         
            +
              
         
     | 
| 
      
 61 
     | 
    
         
            +
              redis-load save-zset --key myzset --file myzset.txt
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            Note that when saving a file any existing file will automatically be over-written.
         
     | 
| 
      
 64 
     | 
    
         
            +
             
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,66 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake/gempackagetask'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rake/rdoctask'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rake/testtask'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'rake/clean'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            NAME = "redis-load"
         
     | 
| 
      
 8 
     | 
    
         
            +
            VER = "0.1"
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            RDOC_OPTS = ['--quiet', '--title', 'redis-load Reference', '--main', 'README']
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            PKG_FILES = %w( README Rakefile CHANGES ) + 
         
     | 
| 
      
 13 
     | 
    
         
            +
              Dir.glob("{bin,doc,tests,examples,lib}/**/*")
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            CLEAN.include ['*.gem', 'pkg']  
         
     | 
| 
      
 16 
     | 
    
         
            +
            SPEC =
         
     | 
| 
      
 17 
     | 
    
         
            +
              Gem::Specification.new do |s|
         
     | 
| 
      
 18 
     | 
    
         
            +
                s.name = NAME
         
     | 
| 
      
 19 
     | 
    
         
            +
                s.version = VER
         
     | 
| 
      
 20 
     | 
    
         
            +
                s.platform = Gem::Platform::RUBY
         
     | 
| 
      
 21 
     | 
    
         
            +
                s.required_ruby_version = ">= 1.8.5"    
         
     | 
| 
      
 22 
     | 
    
         
            +
                s.has_rdoc = true
         
     | 
| 
      
 23 
     | 
    
         
            +
                s.extra_rdoc_files = ["README", "CHANGES"]
         
     | 
| 
      
 24 
     | 
    
         
            +
                s.rdoc_options = RDOC_OPTS
         
     | 
| 
      
 25 
     | 
    
         
            +
                s.summary = "Utility of loading/saving data structures from Redis"
         
     | 
| 
      
 26 
     | 
    
         
            +
                s.description = s.summary
         
     | 
| 
      
 27 
     | 
    
         
            +
                s.author = "Leigh Dodds"
         
     | 
| 
      
 28 
     | 
    
         
            +
                s.email = 'leigh.dodds@talis.com'
         
     | 
| 
      
 29 
     | 
    
         
            +
                s.homepage = 'http://github.org/ldodds/redis-load'
         
     | 
| 
      
 30 
     | 
    
         
            +
                #s.rubyforge_project = ''
         
     | 
| 
      
 31 
     | 
    
         
            +
                s.files = PKG_FILES
         
     | 
| 
      
 32 
     | 
    
         
            +
                s.require_path = "lib" 
         
     | 
| 
      
 33 
     | 
    
         
            +
                s.bindir = "bin"
         
     | 
| 
      
 34 
     | 
    
         
            +
                s.executables = ["redis-load"]
         
     | 
| 
      
 35 
     | 
    
         
            +
                s.test_file = "tests/ts_redis-load.rb"
         
     | 
| 
      
 36 
     | 
    
         
            +
                s.add_dependency("redis")
         
     | 
| 
      
 37 
     | 
    
         
            +
                s.add_dependency("json_pure")
         
     | 
| 
      
 38 
     | 
    
         
            +
                s.add_dependency("siren")        
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
                  
         
     | 
| 
      
 41 
     | 
    
         
            +
            Rake::GemPackageTask.new(SPEC) do |pkg|
         
     | 
| 
      
 42 
     | 
    
         
            +
                pkg.need_tar = true
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            Rake::RDocTask.new do |rdoc|
         
     | 
| 
      
 46 
     | 
    
         
            +
                rdoc.rdoc_dir = 'doc/rdoc'
         
     | 
| 
      
 47 
     | 
    
         
            +
                rdoc.options += RDOC_OPTS
         
     | 
| 
      
 48 
     | 
    
         
            +
                rdoc.rdoc_files.include("README", "CHANGES", "lib/**/*.rb")
         
     | 
| 
      
 49 
     | 
    
         
            +
                rdoc.main = "README"
         
     | 
| 
      
 50 
     | 
    
         
            +
                
         
     | 
| 
      
 51 
     | 
    
         
            +
            end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            Rake::TestTask.new do |test|
         
     | 
| 
      
 54 
     | 
    
         
            +
              test.test_files = FileList['tests/tc_*.rb']
         
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            desc "Install from a locally built copy of the gem"
         
     | 
| 
      
 58 
     | 
    
         
            +
            task :install do
         
     | 
| 
      
 59 
     | 
    
         
            +
              sh %{rake package}
         
     | 
| 
      
 60 
     | 
    
         
            +
              sh %{sudo gem install pkg/#{NAME}-#{VER}}
         
     | 
| 
      
 61 
     | 
    
         
            +
            end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            desc "Uninstall the gem"
         
     | 
| 
      
 64 
     | 
    
         
            +
            task :uninstall => [:clean] do
         
     | 
| 
      
 65 
     | 
    
         
            +
              sh %{sudo gem uninstall #{NAME}}
         
     | 
| 
      
 66 
     | 
    
         
            +
            end
         
     | 
    
        data/bin/redis-load
    ADDED
    
    | 
         @@ -0,0 +1,114 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'redis-load'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'redis'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'getoptlong'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            PROGRAM     = File::basename $0
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            USAGE = <<-EOL 
         
     | 
| 
      
 12 
     | 
    
         
            +
            SYNOPSIS
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              #{ PROGRAM } mode [args]*
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            DESCRIPTION
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            MODE
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              load-json
         
     | 
| 
      
 21 
     | 
    
         
            +
              	Load the contents of a json file as entries into a server
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              load-keys
         
     | 
| 
      
 24 
     | 
    
         
            +
              	Load the contents of a file as key-value pairs. Must be: key,value
         
     | 
| 
      
 25 
     | 
    
         
            +
              	
         
     | 
| 
      
 26 
     | 
    
         
            +
              load-list
         
     | 
| 
      
 27 
     | 
    
         
            +
                Load the contents of a file into a list. Each line is a list entry
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              load-set
         
     | 
| 
      
 30 
     | 
    
         
            +
              	Load the contents of a file into a set. Each line is a set entry  
         
     | 
| 
      
 31 
     | 
    
         
            +
              
         
     | 
| 
      
 32 
     | 
    
         
            +
              load-zset
         
     | 
| 
      
 33 
     | 
    
         
            +
              	Load the contents of a file into a sort set. Each line is a key-value pair of entry,score  
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              save-list
         
     | 
| 
      
 36 
     | 
    
         
            +
                Save a list into a file
         
     | 
| 
      
 37 
     | 
    
         
            +
              
         
     | 
| 
      
 38 
     | 
    
         
            +
              save-set
         
     | 
| 
      
 39 
     | 
    
         
            +
                Save a set into a file
         
     | 
| 
      
 40 
     | 
    
         
            +
              
         
     | 
| 
      
 41 
     | 
    
         
            +
              save-zset
         
     | 
| 
      
 42 
     | 
    
         
            +
                Save a sorted set into a file
         
     | 
| 
      
 43 
     | 
    
         
            +
              
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            OPTIONS
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
              --database            , -d
         
     | 
| 
      
 48 
     | 
    
         
            +
                specify database
         
     | 
| 
      
 49 
     | 
    
         
            +
              --help            , -?
         
     | 
| 
      
 50 
     | 
    
         
            +
                show this message
         
     | 
| 
      
 51 
     | 
    
         
            +
              --host            , -h
         
     | 
| 
      
 52 
     | 
    
         
            +
                specify host on which server is running
         
     | 
| 
      
 53 
     | 
    
         
            +
              --file            , -f
         
     | 
| 
      
 54 
     | 
    
         
            +
                path to file containing the data to load    
         
     | 
| 
      
 55 
     | 
    
         
            +
              --password            , -x
         
     | 
| 
      
 56 
     | 
    
         
            +
                specify password to access server    
         
     | 
| 
      
 57 
     | 
    
         
            +
              --port            , -p
         
     | 
| 
      
 58 
     | 
    
         
            +
                specify port on which server is running    
         
     | 
| 
      
 59 
     | 
    
         
            +
              --key				, -k
         
     | 
| 
      
 60 
     | 
    
         
            +
              	specify a key into which data is loaded
         
     | 
| 
      
 61 
     | 
    
         
            +
              	
         
     | 
| 
      
 62 
     | 
    
         
            +
            EOL
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            mode = ARGV.shift
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            opts = GetoptLong::new(
         
     | 
| 
      
 67 
     | 
    
         
            +
                     [ "--help"            , "-?" , GetoptLong::NO_ARGUMENT ],
         
     | 
| 
      
 68 
     | 
    
         
            +
                     [ "--host"         , "-h" , GetoptLong::REQUIRED_ARGUMENT ],
         
     | 
| 
      
 69 
     | 
    
         
            +
                     [ "--port"         , "-p" , GetoptLong::REQUIRED_ARGUMENT ],
         
     | 
| 
      
 70 
     | 
    
         
            +
                     [ "--password"        , "-x" , GetoptLong::REQUIRED_ARGUMENT ],
         
     | 
| 
      
 71 
     | 
    
         
            +
                     [ "--database"        , "-d" , GetoptLong::REQUIRED_ARGUMENT ],
         
     | 
| 
      
 72 
     | 
    
         
            +
                     [ "--key"        , "-k" , GetoptLong::REQUIRED_ARGUMENT ],                  
         
     | 
| 
      
 73 
     | 
    
         
            +
                     [ "--file"        , "-f" , GetoptLong::REQUIRED_ARGUMENT ],
         
     | 
| 
      
 74 
     | 
    
         
            +
                     [ "--jsonpath"        , "-j" , GetoptLong::REQUIRED_ARGUMENT ]                   
         
     | 
| 
      
 75 
     | 
    
         
            +
                   ).enum_for.inject({}) { |h, (k, v)| h.update k.delete('-') => v }
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            mode = "help" if opts["--help"]
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
            if mode == "help"
         
     | 
| 
      
 80 
     | 
    
         
            +
              USAGE.display  
         
     | 
| 
      
 81 
     | 
    
         
            +
            else
         
     | 
| 
      
 82 
     | 
    
         
            +
              
         
     | 
| 
      
 83 
     | 
    
         
            +
              if opts["file"] == nil
         
     | 
| 
      
 84 
     | 
    
         
            +
              	abort USAGE
         
     | 
| 
      
 85 
     | 
    
         
            +
              end
         
     | 
| 
      
 86 
     | 
    
         
            +
              
         
     | 
| 
      
 87 
     | 
    
         
            +
              if (mode != "load-json" && mode != "load-keys") && opts["key"] == nil
         
     | 
| 
      
 88 
     | 
    
         
            +
                abort USAGE
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
              
         
     | 
| 
      
 91 
     | 
    
         
            +
              cmdline = RedisLoad::CommandLine.new(opts, ENV)
         
     | 
| 
      
 92 
     | 
    
         
            +
              
         
     | 
| 
      
 93 
     | 
    
         
            +
              case mode
         
     | 
| 
      
 94 
     | 
    
         
            +
              	when "load-json"
         
     | 
| 
      
 95 
     | 
    
         
            +
              		cmdline.load_json()  		    
         
     | 
| 
      
 96 
     | 
    
         
            +
              	when "load-keys"
         
     | 
| 
      
 97 
     | 
    
         
            +
              		cmdline.load_keys()  		  
         
     | 
| 
      
 98 
     | 
    
         
            +
              	when "load-list"
         
     | 
| 
      
 99 
     | 
    
         
            +
              		cmdline.load_list()
         
     | 
| 
      
 100 
     | 
    
         
            +
              	when "load-set"
         
     | 
| 
      
 101 
     | 
    
         
            +
              		cmdline.load_set()
         
     | 
| 
      
 102 
     | 
    
         
            +
              	when "load-zset"
         
     | 
| 
      
 103 
     | 
    
         
            +
              		cmdline.load_zset()
         
     | 
| 
      
 104 
     | 
    
         
            +
              	when "save-list"
         
     | 
| 
      
 105 
     | 
    
         
            +
              		cmdline.save_list()  		
         
     | 
| 
      
 106 
     | 
    
         
            +
              	when "save-set"
         
     | 
| 
      
 107 
     | 
    
         
            +
              		cmdline.save_set()  		
         
     | 
| 
      
 108 
     | 
    
         
            +
              	when "save-zset"
         
     | 
| 
      
 109 
     | 
    
         
            +
              		cmdline.save_zset()  		
         
     | 
| 
      
 110 
     | 
    
         
            +
              	else
         
     | 
| 
      
 111 
     | 
    
         
            +
              		puts "Unknown command"
         
     | 
| 
      
 112 
     | 
    
         
            +
              end
         
     | 
| 
      
 113 
     | 
    
         
            +
            end
         
     | 
| 
      
 114 
     | 
    
         
            +
                     
         
     | 
    
        data/lib/redis-load.rb
    ADDED
    
    
| 
         @@ -0,0 +1,71 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module RedisLoad
         
     | 
| 
      
 2 
     | 
    
         
            +
              
         
     | 
| 
      
 3 
     | 
    
         
            +
              #This class acts as an adapter, taking parameters and environment variables and 
         
     | 
| 
      
 4 
     | 
    
         
            +
              #using those to drive an instance of RedisLoad::Loader  
         
     | 
| 
      
 5 
     | 
    
         
            +
              class CommandLine
         
     | 
| 
      
 6 
     | 
    
         
            +
                
         
     | 
| 
      
 7 
     | 
    
         
            +
                def initialize(opts, env)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @opts = opts
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @env = env
         
     | 
| 
      
 10 
     | 
    
         
            +
                  
         
     | 
| 
      
 11 
     | 
    
         
            +
                  opts = Hash.new
         
     | 
| 
      
 12 
     | 
    
         
            +
                  opts[:host] = @opts["host"] if @opts["host"]
         
     | 
| 
      
 13 
     | 
    
         
            +
                  opts[:port] = @opts["port"] if @opts["port"]
         
     | 
| 
      
 14 
     | 
    
         
            +
                  opts[:db] = @opts["database"] if @opts["database"]
         
     | 
| 
      
 15 
     | 
    
         
            +
                  opts[:password] = @opts["password"] if @opts["password"]              
         
     | 
| 
      
 16 
     | 
    
         
            +
                    
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @redis = Redis.new(opts)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @loader = RedisLoad::Loader.new(@redis)
         
     | 
| 
      
 19 
     | 
    
         
            +
                            
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
                
         
     | 
| 
      
 22 
     | 
    
         
            +
                def load_json()
         
     | 
| 
      
 23 
     | 
    
         
            +
                  puts "Loading data from JSON file #{@opts["file"]} into server"
         
     | 
| 
      
 24 
     | 
    
         
            +
                  counter = @loader.load_json( @opts["file"], @opts["jsonpath"] )
         
     | 
| 
      
 25 
     | 
    
         
            +
                  puts "#{counter} keys loaded."      
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
                
         
     | 
| 
      
 28 
     | 
    
         
            +
                def load_list()
         
     | 
| 
      
 29 
     | 
    
         
            +
                  puts "Loading #{@opts["file"]} into list #{@opts["key"]} into server"
         
     | 
| 
      
 30 
     | 
    
         
            +
                  counter = @loader.load_list( @opts["key"] , @opts["file"] )
         
     | 
| 
      
 31 
     | 
    
         
            +
                  puts "#{counter} lines loaded."
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
                
         
     | 
| 
      
 34 
     | 
    
         
            +
                def save_list()
         
     | 
| 
      
 35 
     | 
    
         
            +
                  puts "Saving list #{@opts["key"]} into #{@opts["file"]}"
         
     | 
| 
      
 36 
     | 
    
         
            +
                  size = @loader.save_list( @opts["key"], @opts["file"] )
         
     | 
| 
      
 37 
     | 
    
         
            +
                  puts "#{size} lines saved."      
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
                
         
     | 
| 
      
 40 
     | 
    
         
            +
                def load_keys()
         
     | 
| 
      
 41 
     | 
    
         
            +
                  puts "Loading keys from #{@opts["file"]} into server"
         
     | 
| 
      
 42 
     | 
    
         
            +
                  counter = @loader.load_keys( @opts["file"] )
         
     | 
| 
      
 43 
     | 
    
         
            +
                  puts "#{counter} lines loaded."
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                def load_set()
         
     | 
| 
      
 47 
     | 
    
         
            +
                  puts "Loading #{@opts["file"]} into set #{@opts["key"]} on server"
         
     | 
| 
      
 48 
     | 
    
         
            +
                  counter @loader.load_set( @opts["key"], @opts["file"] )
         
     | 
| 
      
 49 
     | 
    
         
            +
                  puts "#{counter} lines loaded."
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                def save_set()
         
     | 
| 
      
 53 
     | 
    
         
            +
                  puts "Saving set #{@opts["key"]} into #{@opts["file"]}"
         
     | 
| 
      
 54 
     | 
    
         
            +
                  size = @loader.save_set( @opts["key"], @opts["file"] )
         
     | 
| 
      
 55 
     | 
    
         
            +
                  puts "#{size} items saved."      
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
              
         
     | 
| 
      
 58 
     | 
    
         
            +
                def load_zset()
         
     | 
| 
      
 59 
     | 
    
         
            +
                  puts "Loading #{@opts["file"]} into sorted set #{@opts["key"]} on server"
         
     | 
| 
      
 60 
     | 
    
         
            +
                  counter = @loader.load_zset( @opts["key"], @opts["file"] )
         
     | 
| 
      
 61 
     | 
    
         
            +
                  puts "#{counter} items loaded."
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                def save_zset()
         
     | 
| 
      
 65 
     | 
    
         
            +
                  puts "Saving set #{@opts["key"]} into #{@opts["file"]}"
         
     | 
| 
      
 66 
     | 
    
         
            +
                  size = @loader.save_zset( @opts["key"], @opts["file"] )
         
     | 
| 
      
 67 
     | 
    
         
            +
                  puts "#{size} items saved."  
         
     | 
| 
      
 68 
     | 
    
         
            +
                end                      
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,136 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module RedisLoad
         
     | 
| 
      
 2 
     | 
    
         
            +
              
         
     | 
| 
      
 3 
     | 
    
         
            +
              #Exposes support for loading and saving different types of redis data 
         
     | 
| 
      
 4 
     | 
    
         
            +
              #structures to and from files  
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Loader
         
     | 
| 
      
 6 
     | 
    
         
            +
                
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_reader :redis
         
     | 
| 
      
 8 
     | 
    
         
            +
                
         
     | 
| 
      
 9 
     | 
    
         
            +
                def initialize(redis)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @redis = redis      
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def load_keys(file)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  f = File.new( file )
         
     | 
| 
      
 15 
     | 
    
         
            +
                  counter = process_lines(f) do |redis,line|
         
     | 
| 
      
 16 
     | 
    
         
            +
                    line = line.chomp
         
     | 
| 
      
 17 
     | 
    
         
            +
                    parts = line.split(",")
         
     | 
| 
      
 18 
     | 
    
         
            +
                    redis.set( parts[0], parts[1] )
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
                  return counter
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
                
         
     | 
| 
      
 23 
     | 
    
         
            +
                #Load the contents of a JSON file into Redis
         
     | 
| 
      
 24 
     | 
    
         
            +
                #
         
     | 
| 
      
 25 
     | 
    
         
            +
                #Each key in the JSON file becomes a redis key. If the value is a literal then this is added
         
     | 
| 
      
 26 
     | 
    
         
            +
                #as a redis key-value pair. If an array, then a List. If a hash, then a Hash. 
         
     | 
| 
      
 27 
     | 
    
         
            +
                #
         
     | 
| 
      
 28 
     | 
    
         
            +
                #Nested objects will be flattened.
         
     | 
| 
      
 29 
     | 
    
         
            +
                #
         
     | 
| 
      
 30 
     | 
    
         
            +
                #  file:: json file
         
     | 
| 
      
 31 
     | 
    
         
            +
                #  path:: optional, path in the json file indicating the subsection to load
         
     | 
| 
      
 32 
     | 
    
         
            +
                def load_json(file, path=nil)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  f = File.new( file )
         
     | 
| 
      
 34 
     | 
    
         
            +
                  json = JSON.parse( f.read )
         
     | 
| 
      
 35 
     | 
    
         
            +
                  if path != nil
         
     | 
| 
      
 36 
     | 
    
         
            +
                    json = Siren.query(query, json)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
                  counter = 0
         
     | 
| 
      
 39 
     | 
    
         
            +
                  #TODO could support proper results, not just path?
         
     | 
| 
      
 40 
     | 
    
         
            +
                  if json != nil
         
     | 
| 
      
 41 
     | 
    
         
            +
                    json.each_pair do |key,value|
         
     | 
| 
      
 42 
     | 
    
         
            +
                      if value.class() == Array
         
     | 
| 
      
 43 
     | 
    
         
            +
                        value.each do |v|
         
     | 
| 
      
 44 
     | 
    
         
            +
                          @redis.lpush( key, v )
         
     | 
| 
      
 45 
     | 
    
         
            +
                        end          
         
     | 
| 
      
 46 
     | 
    
         
            +
                      elsif value.class == Hash
         
     | 
| 
      
 47 
     | 
    
         
            +
                        value.each_pair do |field, v|
         
     | 
| 
      
 48 
     | 
    
         
            +
                          #TODO better handling of nesting?
         
     | 
| 
      
 49 
     | 
    
         
            +
                          #E.g. convert hash or array back into JSON?
         
     | 
| 
      
 50 
     | 
    
         
            +
                          @redis.hset(key, field, v)
         
     | 
| 
      
 51 
     | 
    
         
            +
                        end
         
     | 
| 
      
 52 
     | 
    
         
            +
                      else
         
     | 
| 
      
 53 
     | 
    
         
            +
                        @redis.set(key, value)
         
     | 
| 
      
 54 
     | 
    
         
            +
                      end
         
     | 
| 
      
 55 
     | 
    
         
            +
                      counter = counter + 1      
         
     | 
| 
      
 56 
     | 
    
         
            +
                    end        
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                  return counter
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
                    
         
     | 
| 
      
 61 
     | 
    
         
            +
                #Load the contents of a file into a Redis list
         
     | 
| 
      
 62 
     | 
    
         
            +
                #
         
     | 
| 
      
 63 
     | 
    
         
            +
                #  key:: name of the list
         
     | 
| 
      
 64 
     | 
    
         
            +
                #  file:: name of file (string)
         
     | 
| 
      
 65 
     | 
    
         
            +
                def load_list(key, file)
         
     | 
| 
      
 66 
     | 
    
         
            +
                  f = File.new( file )
         
     | 
| 
      
 67 
     | 
    
         
            +
                  counter = process_lines(f) do |redis,line|
         
     | 
| 
      
 68 
     | 
    
         
            +
                    redis.lpush( key , line.chomp)
         
     | 
| 
      
 69 
     | 
    
         
            +
                  end
         
     | 
| 
      
 70 
     | 
    
         
            +
                  return counter            
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
                
         
     | 
| 
      
 73 
     | 
    
         
            +
                def load_set(key, file)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  f = File.new( file )
         
     | 
| 
      
 75 
     | 
    
         
            +
                  counter = process_lines(f) do |redis,line|
         
     | 
| 
      
 76 
     | 
    
         
            +
                    redis.sadd( key , line.chomp)
         
     | 
| 
      
 77 
     | 
    
         
            +
                  end
         
     | 
| 
      
 78 
     | 
    
         
            +
                  return counter
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
                
         
     | 
| 
      
 81 
     | 
    
         
            +
                def load_zset(key, file)
         
     | 
| 
      
 82 
     | 
    
         
            +
                  f = File.new( file )
         
     | 
| 
      
 83 
     | 
    
         
            +
                  counter = process_lines(f) do |redis,line|
         
     | 
| 
      
 84 
     | 
    
         
            +
                    line = line.chomp
         
     | 
| 
      
 85 
     | 
    
         
            +
                    parts = line.split(",")
         
     | 
| 
      
 86 
     | 
    
         
            +
                    redis.set( key , parts[1], parts[0] )
         
     | 
| 
      
 87 
     | 
    
         
            +
                  end
         
     | 
| 
      
 88 
     | 
    
         
            +
                  return counter
         
     | 
| 
      
 89 
     | 
    
         
            +
                end
         
     | 
| 
      
 90 
     | 
    
         
            +
                
         
     | 
| 
      
 91 
     | 
    
         
            +
                def save_list(key, file)
         
     | 
| 
      
 92 
     | 
    
         
            +
                  size = @redis.llen( key )
         
     | 
| 
      
 93 
     | 
    
         
            +
                  count = 0
         
     | 
| 
      
 94 
     | 
    
         
            +
                  File.open( file , "w") do |file|
         
     | 
| 
      
 95 
     | 
    
         
            +
                    while (count < size)
         
     | 
| 
      
 96 
     | 
    
         
            +
                      file.puts( @redis.lindex(key , count) )
         
     | 
| 
      
 97 
     | 
    
         
            +
                      count = count + 1
         
     | 
| 
      
 98 
     | 
    
         
            +
                    end
         
     | 
| 
      
 99 
     | 
    
         
            +
                  end
         
     | 
| 
      
 100 
     | 
    
         
            +
                  return size      
         
     | 
| 
      
 101 
     | 
    
         
            +
                end
         
     | 
| 
      
 102 
     | 
    
         
            +
                                
         
     | 
| 
      
 103 
     | 
    
         
            +
                def save_set(key, file)
         
     | 
| 
      
 104 
     | 
    
         
            +
                  members = @redis.smembers( key )
         
     | 
| 
      
 105 
     | 
    
         
            +
                  File.open( file , "w") do |file|
         
     | 
| 
      
 106 
     | 
    
         
            +
                    members.each do |m|
         
     | 
| 
      
 107 
     | 
    
         
            +
                      file.puts(m)
         
     | 
| 
      
 108 
     | 
    
         
            +
                    end
         
     | 
| 
      
 109 
     | 
    
         
            +
                  end
         
     | 
| 
      
 110 
     | 
    
         
            +
                  return members.length      
         
     | 
| 
      
 111 
     | 
    
         
            +
                end
         
     | 
| 
      
 112 
     | 
    
         
            +
                    
         
     | 
| 
      
 113 
     | 
    
         
            +
                def save_zset(key, file)
         
     | 
| 
      
 114 
     | 
    
         
            +
                  members = @redis.zrange( key , 0, -1, :with_scores => true)
         
     | 
| 
      
 115 
     | 
    
         
            +
                  File.open( file , "w") do |file|
         
     | 
| 
      
 116 
     | 
    
         
            +
                    members.each_slice(2) do |member,value|
         
     | 
| 
      
 117 
     | 
    
         
            +
                      file.puts("#{member},#{value}")
         
     | 
| 
      
 118 
     | 
    
         
            +
                    end
         
     | 
| 
      
 119 
     | 
    
         
            +
                  end
         
     | 
| 
      
 120 
     | 
    
         
            +
                  return members.length/2  
         
     | 
| 
      
 121 
     | 
    
         
            +
                end
         
     | 
| 
      
 122 
     | 
    
         
            +
                
         
     | 
| 
      
 123 
     | 
    
         
            +
                #Process lines
         
     | 
| 
      
 124 
     | 
    
         
            +
                #
         
     | 
| 
      
 125 
     | 
    
         
            +
                #  io:: IO Object
         
     | 
| 
      
 126 
     | 
    
         
            +
                def process_lines(io)
         
     | 
| 
      
 127 
     | 
    
         
            +
                  counter = 0
         
     | 
| 
      
 128 
     | 
    
         
            +
                  io.each_line do |line|
         
     | 
| 
      
 129 
     | 
    
         
            +
                    yield @redis, line
         
     | 
| 
      
 130 
     | 
    
         
            +
                    counter = counter + 1
         
     | 
| 
      
 131 
     | 
    
         
            +
                  end
         
     | 
| 
      
 132 
     | 
    
         
            +
                  return counter      
         
     | 
| 
      
 133 
     | 
    
         
            +
                end
         
     | 
| 
      
 134 
     | 
    
         
            +
                    
         
     | 
| 
      
 135 
     | 
    
         
            +
              end
         
     | 
| 
      
 136 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,121 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: redis-load
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 9
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 6 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: "0.1"
         
     | 
| 
      
 10 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 11 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 12 
     | 
    
         
            +
            - Leigh Dodds
         
     | 
| 
      
 13 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 15 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2010-07-22 00:00:00 +01:00
         
     | 
| 
      
 18 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 19 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 20 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 21 
     | 
    
         
            +
              name: redis
         
     | 
| 
      
 22 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 23 
     | 
    
         
            +
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 24 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 25 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 26 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 27 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 28 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
      
 29 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 30 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 31 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 32 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 33 
     | 
    
         
            +
              version_requirements: *id001
         
     | 
| 
      
 34 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 35 
     | 
    
         
            +
              name: json_pure
         
     | 
| 
      
 36 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 37 
     | 
    
         
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 38 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 39 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 40 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 41 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 42 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
      
 43 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 44 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 45 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 46 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 47 
     | 
    
         
            +
              version_requirements: *id002
         
     | 
| 
      
 48 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 49 
     | 
    
         
            +
              name: siren
         
     | 
| 
      
 50 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 51 
     | 
    
         
            +
              requirement: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 52 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 53 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 54 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 55 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 56 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
      
 57 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 58 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 59 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 60 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 61 
     | 
    
         
            +
              version_requirements: *id003
         
     | 
| 
      
 62 
     | 
    
         
            +
            description: Utility of loading/saving data structures from Redis
         
     | 
| 
      
 63 
     | 
    
         
            +
            email: leigh.dodds@talis.com
         
     | 
| 
      
 64 
     | 
    
         
            +
            executables: 
         
     | 
| 
      
 65 
     | 
    
         
            +
            - redis-load
         
     | 
| 
      
 66 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            extra_rdoc_files: 
         
     | 
| 
      
 69 
     | 
    
         
            +
            - README
         
     | 
| 
      
 70 
     | 
    
         
            +
            - CHANGES
         
     | 
| 
      
 71 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 72 
     | 
    
         
            +
            - README
         
     | 
| 
      
 73 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 74 
     | 
    
         
            +
            - CHANGES
         
     | 
| 
      
 75 
     | 
    
         
            +
            - bin/redis-load
         
     | 
| 
      
 76 
     | 
    
         
            +
            - tests/ts_redis-load.rb
         
     | 
| 
      
 77 
     | 
    
         
            +
            - lib/redis-load.rb
         
     | 
| 
      
 78 
     | 
    
         
            +
            - lib/redis-load/command_line.rb
         
     | 
| 
      
 79 
     | 
    
         
            +
            - lib/redis-load/loader.rb
         
     | 
| 
      
 80 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 81 
     | 
    
         
            +
            homepage: http://github.org/ldodds/redis-load
         
     | 
| 
      
 82 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 85 
     | 
    
         
            +
            rdoc_options: 
         
     | 
| 
      
 86 
     | 
    
         
            +
            - --quiet
         
     | 
| 
      
 87 
     | 
    
         
            +
            - --title
         
     | 
| 
      
 88 
     | 
    
         
            +
            - redis-load Reference
         
     | 
| 
      
 89 
     | 
    
         
            +
            - --main
         
     | 
| 
      
 90 
     | 
    
         
            +
            - README
         
     | 
| 
      
 91 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 92 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 93 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 94 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 95 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 96 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 97 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 98 
     | 
    
         
            +
                  hash: 61
         
     | 
| 
      
 99 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 100 
     | 
    
         
            +
                  - 1
         
     | 
| 
      
 101 
     | 
    
         
            +
                  - 8
         
     | 
| 
      
 102 
     | 
    
         
            +
                  - 5
         
     | 
| 
      
 103 
     | 
    
         
            +
                  version: 1.8.5
         
     | 
| 
      
 104 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 105 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 106 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 107 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 108 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 109 
     | 
    
         
            +
                  hash: 3
         
     | 
| 
      
 110 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 111 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 112 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 113 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 116 
     | 
    
         
            +
            rubygems_version: 1.3.7
         
     | 
| 
      
 117 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 118 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 119 
     | 
    
         
            +
            summary: Utility of loading/saving data structures from Redis
         
     | 
| 
      
 120 
     | 
    
         
            +
            test_files: 
         
     | 
| 
      
 121 
     | 
    
         
            +
            - tests/ts_redis-load.rb
         
     |