@@ -2990,13 +2990,31 @@ def xdel(key, *ids)
2990
2990
# redis.xrange('mystream', count: 10)
2991
2991
#
2992
2992
# @param key [String] the stream key
2993
- # @param first [String] first entry id of range, default value is `- `
2994
- # @param last [String] last entry id of range, default value is `+ `
2993
+ # @param start [String] first entry id of range, default value is `+ `
2994
+ # @param end [String] last entry id of range, default value is `- `
2995
2995
# @param count [Integer] the number of entries as limit
2996
2996
#
2997
2997
# @return [Hash{String => Hash}] the entries
2998
- def xrange ( key , first : '-' , last : '+' , count : nil )
2999
- args = [ :xrange , key , first , last ]
2998
+
2999
+ # Fetches entries of the stream in ascending order.
3000
+ #
3001
+ # @example Without options
3002
+ # redis.xrange('mystream')
3003
+ # @example With a specific start
3004
+ # redis.xrange('mystream', '0-1')
3005
+ # @example With a specific start and end
3006
+ # redis.xrange('mystream', '0-1', '0-3')
3007
+ # @example With count options
3008
+ # redis.xrange('mystream', count: 10)
3009
+ #
3010
+ # @param key [String] the stream key
3011
+ # @param start [String] first entry id of range, default value is `-`
3012
+ # @param end [String] last entry id of range, default value is `+`
3013
+ # @param count [Integer] the number of entries as limit
3014
+ #
3015
+ # @return [Array<Array<String, Hash>>] the ids and entries pairs
3016
+ def xrange ( key , start = '-' , _end = '+' , count : nil )
3017
+ args = [ :xrange , key , start , _end ]
3000
3018
args . concat ( [ 'COUNT' , count ] ) if count
3001
3019
synchronize { |client | client . call ( args , &HashifyStreamEntries ) }
3002
3020
end
@@ -3005,21 +3023,21 @@ def xrange(key, first: '-', last: '+', count: nil)
3005
3023
#
3006
3024
# @example Without options
3007
3025
# redis.xrevrange('mystream')
3008
- # @example With first entry id option
3009
- # redis.xrevrange('mystream', first: '0-1 ')
3010
- # @example With first and last entry id options
3011
- # redis.xrevrange('mystream', first: '0-1 ', last: '0-3 ')
3026
+ # @example With a specific end
3027
+ # redis.xrevrange('mystream', '0-3 ')
3028
+ # @example With a specific end and start
3029
+ # redis.xrevrange('mystream', '0-3 ', '0-1 ')
3012
3030
# @example With count options
3013
3031
# redis.xrevrange('mystream', count: 10)
3014
3032
#
3015
- # @param key [String] the stream key
3016
- # @param first [String] first entry id of range, default value is `- `
3017
- # @param last [String] last entry id of range, default value is `+ `
3018
- # @param count [Integer] the number of entries as limit
3033
+ # @param key [String] the stream key
3034
+ # @param end [String] first entry id of range, default value is `+ `
3035
+ # @param start [String] last entry id of range, default value is `- `
3036
+ # @params count [Integer] the number of entries as limit
3019
3037
#
3020
- # @return [Hash{ String => Hash} ] the entries
3021
- def xrevrange ( key , first : '- ', last : '+ ', count : nil )
3022
- args = [ :xrevrange , key , last , first ]
3038
+ # @return [Array<Array< String, Hash>> ] the ids and entries pairs
3039
+ def xrevrange ( key , _end = '+ ', start = '- ', count : nil )
3040
+ args = [ :xrevrange , key , _end , start ]
3023
3041
args . concat ( [ 'COUNT' , count ] ) if count
3024
3042
synchronize { |client | client . call ( args , &HashifyStreamEntries ) }
3025
3043
end
@@ -3186,26 +3204,31 @@ def xclaim(key, group, consumer, min_idle_time, *ids, **opts)
3186
3204
# @example With key and group
3187
3205
# redis.xpending('mystream', 'mygroup')
3188
3206
# @example With range options
3189
- # redis.xpending('mystream', 'mygroup', first: '-', last: '+', count: 10)
3207
+ # redis.xpending('mystream', 'mygroup', '-', '+', 10)
3190
3208
# @example With range and consumer options
3191
- # redis.xpending('mystream', 'mygroup', 'consumer1', first: ' -', last: '+', count: 10 )
3209
+ # redis.xpending('mystream', 'mygroup', '-', '+', 10, 'consumer1' )
3192
3210
#
3193
- # @param key [String] the stream key
3194
- # @param group [String] the consumer group name
3195
- # @param consumer [String] the consumer name
3196
- # @param opts [Hash] several options for `XPENDING` command
3197
- #
3198
- # @option opts [String] :first first entry id of range
3199
- # @option opts [String] :last last entry id of range
3200
- # @option opts [Integer] :count the number of entries as limit
3211
+ # @param key [String] the stream key
3212
+ # @param group [String] the consumer group name
3213
+ # @param start [String] start first entry id of range
3214
+ # @param end [String] end last entry id of range
3215
+ # @param count [Integer] count the number of entries as limit
3216
+ # @param consumer [String] the consumer name
3201
3217
#
3202
3218
# @return [Hash] the summary of pending entries
3203
3219
# @return [Array<Hash>] the pending entries details if options were specified
3204
- def xpending ( key , group , consumer = nil , **opts )
3205
- args = [ :xpending , key , group , opts [ :first ] , opts [ :last ] , opts [ :count ] , consumer ] . compact
3206
- summary_needed = consumer . nil? && opts . empty?
3220
+ def xpending ( key , group , *args )
3221
+ command_args = [ :xpending , key , group ]
3222
+ case args . size
3223
+ when 0 , 3 , 4
3224
+ command_args . concat ( args )
3225
+ else
3226
+ raise ArgumentError , "wrong number of arguments (given #{ args . size + 2 } , expected 2, 5 or 6)"
3227
+ end
3228
+
3229
+ summary_needed = args . empty?
3207
3230
blk = summary_needed ? HashifyStreamPendings : HashifyStreamPendingDetails
3208
- synchronize { |client | client . call ( args , &blk ) }
3231
+ synchronize { |client | client . call ( command_args , &blk ) }
3209
3232
end
3210
3233
3211
3234
# Interact with the sentinel command (masters, master, slaves, failover)
@@ -3365,7 +3388,7 @@ def method_missing(command, *args)
3365
3388
lambda { |reply |
3366
3389
reply . map do |entry_id , values |
3367
3390
[ entry_id , values . each_slice ( 2 ) . to_h ]
3368
- end . to_h
3391
+ end
3369
3392
}
3370
3393
3371
3394
HashifyStreamPendings =
0 commit comments