redis 4.1.2 → 4.2.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +39 -1
- data/README.md +14 -5
- data/lib/redis.rb +385 -343
- data/lib/redis/client.rb +66 -69
- data/lib/redis/cluster.rb +13 -4
- data/lib/redis/cluster/node.rb +3 -0
- data/lib/redis/cluster/node_key.rb +3 -7
- data/lib/redis/cluster/option.rb +27 -14
- data/lib/redis/cluster/slot.rb +30 -13
- data/lib/redis/cluster/slot_loader.rb +4 -4
- data/lib/redis/connection.rb +2 -0
- data/lib/redis/connection/command_helper.rb +3 -2
- data/lib/redis/connection/hiredis.rb +4 -3
- data/lib/redis/connection/registry.rb +2 -1
- data/lib/redis/connection/ruby.rb +47 -58
- data/lib/redis/connection/synchrony.rb +9 -4
- data/lib/redis/distributed.rb +117 -62
- data/lib/redis/errors.rb +2 -0
- data/lib/redis/hash_ring.rb +15 -14
- data/lib/redis/pipeline.rb +16 -3
- data/lib/redis/subscribe.rb +11 -12
- data/lib/redis/version.rb +3 -1
- metadata +14 -9
    
        data/lib/redis/pipeline.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            class Redis
         | 
| 2 4 | 
             
              class Pipeline
         | 
| 3 5 | 
             
                attr_accessor :db
         | 
| @@ -60,7 +62,7 @@ class Redis | |
| 60 62 | 
             
                  @futures.map(&:timeout)
         | 
| 61 63 | 
             
                end
         | 
| 62 64 |  | 
| 63 | 
            -
                def with_reconnect(val=true)
         | 
| 65 | 
            +
                def with_reconnect(val = true)
         | 
| 64 66 | 
             
                  @with_reconnect = false unless val
         | 
| 65 67 | 
             
                  yield
         | 
| 66 68 | 
             
                end
         | 
| @@ -92,7 +94,8 @@ class Redis | |
| 92 94 |  | 
| 93 95 | 
             
                    if exec.size < futures.size
         | 
| 94 96 | 
             
                      # Some command wasn't recognized by Redis.
         | 
| 95 | 
            -
                       | 
| 97 | 
            +
                      command_error = replies.detect { |r| r.is_a?(CommandError) }
         | 
| 98 | 
            +
                      raise command_error
         | 
| 96 99 | 
             
                    end
         | 
| 97 100 |  | 
| 98 101 | 
             
                    super(exec) do |reply|
         | 
| @@ -139,6 +142,16 @@ class Redis | |
| 139 142 | 
             
                  @object = FutureNotReady
         | 
| 140 143 | 
             
                end
         | 
| 141 144 |  | 
| 145 | 
            +
                def ==(_other)
         | 
| 146 | 
            +
                  message = +"The methods == and != are deprecated for Redis::Future and will be removed in 4.2.0"
         | 
| 147 | 
            +
                  message << " - You probably meant to call .value == or .value !="
         | 
| 148 | 
            +
                  message << " (#{::Kernel.caller(1, 1).first})\n"
         | 
| 149 | 
            +
             | 
| 150 | 
            +
                  ::Kernel.warn(message)
         | 
| 151 | 
            +
             | 
| 152 | 
            +
                  super
         | 
| 153 | 
            +
                end
         | 
| 154 | 
            +
             | 
| 142 155 | 
             
                def inspect
         | 
| 143 156 | 
             
                  "<Redis::Future #{@command.inspect}>"
         | 
| 144 157 | 
             
                end
         | 
| @@ -153,7 +166,7 @@ class Redis | |
| 153 166 | 
             
                end
         | 
| 154 167 |  | 
| 155 168 | 
             
                def value
         | 
| 156 | 
            -
                  ::Kernel.raise(@object) if @object. | 
| 169 | 
            +
                  ::Kernel.raise(@object) if @object.is_a?(::RuntimeError)
         | 
| 157 170 | 
             
                  @object
         | 
| 158 171 | 
             
                end
         | 
| 159 172 |  | 
    
        data/lib/redis/subscribe.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            class Redis
         | 
| 2 4 | 
             
              class SubscribedClient
         | 
| 3 5 | 
             
                def initialize(client)
         | 
| @@ -32,24 +34,21 @@ class Redis | |
| 32 34 | 
             
                  call([:punsubscribe, *channels])
         | 
| 33 35 | 
             
                end
         | 
| 34 36 |  | 
| 35 | 
            -
             | 
| 37 | 
            +
                protected
         | 
| 36 38 |  | 
| 37 39 | 
             
                def subscription(start, stop, channels, block, timeout = 0)
         | 
| 38 40 | 
             
                  sub = Subscription.new(&block)
         | 
| 39 41 |  | 
| 40 42 | 
             
                  unsubscribed = false
         | 
| 41 43 |  | 
| 42 | 
            -
                   | 
| 43 | 
            -
                     | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
                      break if unsubscribed
         | 
| 48 | 
            -
                    end
         | 
| 49 | 
            -
                  ensure
         | 
| 50 | 
            -
                    # No need to unsubscribe here. The real client closes the connection
         | 
| 51 | 
            -
                    # whenever an exception is raised (see #ensure_connected).
         | 
| 44 | 
            +
                  @client.call_loop([start, *channels], timeout) do |line|
         | 
| 45 | 
            +
                    type, *rest = line
         | 
| 46 | 
            +
                    sub.callbacks[type].call(*rest)
         | 
| 47 | 
            +
                    unsubscribed = type == stop && rest.last == 0
         | 
| 48 | 
            +
                    break if unsubscribed
         | 
| 52 49 | 
             
                  end
         | 
| 50 | 
            +
                  # No need to unsubscribe here. The real client closes the connection
         | 
| 51 | 
            +
                  # whenever an exception is raised (see #ensure_connected).
         | 
| 53 52 | 
             
                end
         | 
| 54 53 | 
             
              end
         | 
| 55 54 |  | 
| @@ -58,7 +57,7 @@ class Redis | |
| 58 57 |  | 
| 59 58 | 
             
                def initialize
         | 
| 60 59 | 
             
                  @callbacks = Hash.new do |hash, key|
         | 
| 61 | 
            -
                    hash[key] =  | 
| 60 | 
            +
                    hash[key] = ->(*_) {}
         | 
| 62 61 | 
             
                  end
         | 
| 63 62 |  | 
| 64 63 | 
             
                  yield(self)
         | 
    
        data/lib/redis/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: redis
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4. | 
| 4 | 
            +
              version: 4.2.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ezra Zygmuntowicz
         | 
| @@ -13,13 +13,13 @@ authors: | |
| 13 13 | 
             
            - Michel Martens
         | 
| 14 14 | 
             
            - Damian Janowski
         | 
| 15 15 | 
             
            - Pieter Noordhuis
         | 
| 16 | 
            -
            autorequire: | 
| 16 | 
            +
            autorequire:
         | 
| 17 17 | 
             
            bindir: bin
         | 
| 18 18 | 
             
            cert_chain: []
         | 
| 19 | 
            -
            date:  | 
| 19 | 
            +
            date: 2020-09-07 00:00:00.000000000 Z
         | 
| 20 20 | 
             
            dependencies:
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 22 | 
            -
              name:  | 
| 22 | 
            +
              name: em-synchrony
         | 
| 23 23 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 24 24 | 
             
                requirements:
         | 
| 25 25 | 
             
                - - ">="
         | 
| @@ -47,7 +47,7 @@ dependencies: | |
| 47 47 | 
             
                  - !ruby/object:Gem::Version
         | 
| 48 48 | 
             
                    version: '0'
         | 
| 49 49 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 50 | 
            -
              name:  | 
| 50 | 
            +
              name: mocha
         | 
| 51 51 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 52 52 | 
             
                requirements:
         | 
| 53 53 | 
             
                - - ">="
         | 
| @@ -99,8 +99,13 @@ files: | |
| 99 99 | 
             
            homepage: https://github.com/redis/redis-rb
         | 
| 100 100 | 
             
            licenses:
         | 
| 101 101 | 
             
            - MIT
         | 
| 102 | 
            -
            metadata: | 
| 103 | 
            -
             | 
| 102 | 
            +
            metadata:
         | 
| 103 | 
            +
              bug_tracker_uri: https://github.com/redis/redis-rb/issues
         | 
| 104 | 
            +
              changelog_uri: https://github.com/redis/redis-rb/blob/master/CHANGELOG.md
         | 
| 105 | 
            +
              documentation_uri: https://www.rubydoc.info/gems/redis/4.2.2
         | 
| 106 | 
            +
              homepage_uri: https://github.com/redis/redis-rb
         | 
| 107 | 
            +
              source_code_uri: https://github.com/redis/redis-rb/tree/v4.2.2
         | 
| 108 | 
            +
            post_install_message:
         | 
| 104 109 | 
             
            rdoc_options: []
         | 
| 105 110 | 
             
            require_paths:
         | 
| 106 111 | 
             
            - lib
         | 
| @@ -115,8 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 115 120 | 
             
                - !ruby/object:Gem::Version
         | 
| 116 121 | 
             
                  version: '0'
         | 
| 117 122 | 
             
            requirements: []
         | 
| 118 | 
            -
            rubygems_version: 3. | 
| 119 | 
            -
            signing_key: | 
| 123 | 
            +
            rubygems_version: 3.1.2
         | 
| 124 | 
            +
            signing_key:
         | 
| 120 125 | 
             
            specification_version: 4
         | 
| 121 126 | 
             
            summary: A Ruby client library for Redis
         | 
| 122 127 | 
             
            test_files: []
         |