kredis 1.7.0 → 1.8.0
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/MIT-LICENSE +2 -2
- data/README.md +7 -3
- data/lib/kredis/namespace.rb +21 -4
- data/lib/kredis/railtie.rb +1 -1
- data/lib/kredis/types/hash.rb +1 -1
- data/lib/kredis/types/set.rb +5 -2
- data/lib/kredis/version.rb +1 -1
- metadata +3 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7b578a8b9d0b956e519c324d7ba9dd6036124637801366d9f1a2719a7d340d5
|
4
|
+
data.tar.gz: a4bc7d1a74540a7bd41691105833123bffd27ff32f07b01ce82986820d6068e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ca284918aa9079b5265f1603a9ff33c7fe6f562b4cf76a97ce571542a7dccb9265d2d94441b578570729e415d0ea1adf29786612a31635660cebe82917172df
|
7
|
+
data.tar.gz: 569e06a45f6696800372a6f11a953e12267faf009596767366a860c0f6f691c40668d5a0e94ea7cd0c9bf09370870bca209a3e9081d8f0489be79fce64864ae1
|
data/MIT-LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2020
|
1
|
+
Copyright (c) 2020-2025 37signals LLC
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
a copy of this software and associated documentation files (the
|
@@ -17,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
17
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
18
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
19
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -48,11 +48,13 @@ There are data structures for counters, enums, flags, lists, unique lists, sets,
|
|
48
48
|
list = Kredis.list "mylist"
|
49
49
|
list << "hello world!" # => RPUSH mylist "hello world!"
|
50
50
|
[ "hello world!" ] == list.elements # => LRANGE mylist 0, -1
|
51
|
+
list.clear # => DEL mylist
|
51
52
|
|
52
53
|
integer_list = Kredis.list "myintegerlist", typed: :integer, default: [ 1, 2, 3 ] # => EXISTS? myintegerlist, RPUSH myintegerlist "1" "2" "3"
|
53
54
|
integer_list.append([ 4, 5, 6 ]) # => RPUSH myintegerlist "4" "5" "6"
|
54
55
|
integer_list << 7 # => RPUSH myintegerlist "7"
|
55
56
|
[ 1, 2, 3, 4, 5, 6, 7 ] == integer_list.elements # => LRANGE myintegerlist 0 -1
|
57
|
+
integer_list.clear # => DEL myintegerlist
|
56
58
|
|
57
59
|
unique_list = Kredis.unique_list "myuniquelist"
|
58
60
|
unique_list.append(%w[ 2 3 4 ]) # => LREM myuniquelist 0, "2" + LREM myuniquelist 0, "3" + LREM myuniquelist 0, "4" + RPUSH myuniquelist "2", "3", "4"
|
@@ -61,6 +63,7 @@ unique_list.append([])
|
|
61
63
|
unique_list << "5" # => LREM myuniquelist 0, "5" + RPUSH myuniquelist "5"
|
62
64
|
unique_list.remove(3) # => LREM myuniquelist 0, "3"
|
63
65
|
[ "4", "2", "1", "5" ] == unique_list.elements # => LRANGE myuniquelist 0, -1
|
66
|
+
unique_list.clear # => DEL myuniquelist
|
64
67
|
|
65
68
|
ordered_set = Kredis.ordered_set "myorderedset"
|
66
69
|
ordered_set.append(%w[ 2 3 4 ]) # => ZADD myorderedset 1646131025.4953232 2 1646131025.495326 3 1646131025.4953272 4
|
@@ -75,6 +78,7 @@ set.add(DateTime.tomorrow, DateTime.yesterday) # => SADD myset "2021-0
|
|
75
78
|
set << DateTime.tomorrow # => SADD myset "2021-02-03 00:00:00 +0100"
|
76
79
|
2 == set.size # => SCARD myset
|
77
80
|
[ DateTime.tomorrow, DateTime.yesterday ] == set.members # => SMEMBERS myset
|
81
|
+
set.clear # => DEL myset
|
78
82
|
|
79
83
|
hash = Kredis.hash "myhash"
|
80
84
|
hash.update("key" => "value", "key2" => "value2") # => HSET myhash "key", "value", "key2", "value2"
|
@@ -102,6 +106,7 @@ counter.increment by: 2 # => SET mycounter 0 EX 5 NX + INCRBY "mycounter
|
|
102
106
|
2 == counter.value # => GET "mycounter"
|
103
107
|
sleep 6.seconds
|
104
108
|
0 == counter.value # => GET "mycounter"
|
109
|
+
counter.reset # => DEL mycounter
|
105
110
|
|
106
111
|
cycle = Kredis.cycle "mycycle", values: %i[ one two three ]
|
107
112
|
:one == cycle.value # => GET mycycle
|
@@ -111,6 +116,7 @@ cycle.next # => GET mycycle + SET mycycle 2
|
|
111
116
|
:three == cycle.value # => GET mycycle
|
112
117
|
cycle.next # => GET mycycle + SET mycycle 0
|
113
118
|
:one == cycle.value # => GET mycycle
|
119
|
+
cycle.reset # => DEL mycycle
|
114
120
|
|
115
121
|
enum = Kredis.enum "myenum", values: %w[ one two three ], default: "one"
|
116
122
|
"one" == enum.value # => GET myenum
|
@@ -166,14 +172,12 @@ limiter = Kredis.limiter "mylimit", limit: 3, expires_in: 5.seconds
|
|
166
172
|
0 == limiter.value # => GET "limiter"
|
167
173
|
limiter.poke # => SET limiter 0 NX + INCRBY limiter 1
|
168
174
|
limiter.poke # => SET limiter 0 NX + INCRBY limiter 1
|
169
|
-
limiter.poke # => SET limiter 0 NX + INCRBY limiter 1
|
170
175
|
false == limiter.exceeded? # => GET "limiter"
|
171
176
|
limiter.poke # => SET limiter 0 NX + INCRBY limiter 1
|
172
177
|
true == limiter.exceeded? # => GET "limiter"
|
173
178
|
sleep 6
|
174
179
|
limiter.poke # => SET limiter 0 NX + INCRBY limiter 1
|
175
180
|
limiter.poke # => SET limiter 0 NX + INCRBY limiter 1
|
176
|
-
limiter.poke # => SET limiter 0 NX + INCRBY limiter 1
|
177
181
|
false == limiter.exceeded? # => GET "limiter"
|
178
182
|
```
|
179
183
|
|
@@ -263,7 +267,7 @@ If you don't have `config/redis/shared.yml` (or use another named configuration)
|
|
263
267
|
|
264
268
|
### Redis support
|
265
269
|
|
266
|
-
Kredis works with Redis server 4.0+, with the [Redis Ruby](https://github.com/redis/redis-rb) client version 4.2+.
|
270
|
+
Kredis works with Redis server 4.0+, with the [Redis Ruby](https://github.com/redis/redis-rb) client version 4.2+. Redis Cluster is not supported.
|
267
271
|
|
268
272
|
### Setting SSL options on Redis Connections
|
269
273
|
|
data/lib/kredis/namespace.rb
CHANGED
@@ -1,14 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Kredis::Namespace
|
4
|
-
|
5
|
-
Thread.current[:kredis_namespace] = namespace
|
6
|
-
end
|
4
|
+
attr_accessor :global_namespace
|
7
5
|
|
8
6
|
def namespace
|
9
|
-
|
7
|
+
if global_namespace
|
8
|
+
if value = thread_namespace
|
9
|
+
"#{global_namespace}:#{value}"
|
10
|
+
else
|
11
|
+
global_namespace
|
12
|
+
end
|
13
|
+
else
|
14
|
+
thread_namespace
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def thread_namespace
|
19
|
+
Thread.current[:kredis_thread_namespace]
|
10
20
|
end
|
11
21
|
|
22
|
+
def thread_namespace=(value)
|
23
|
+
Thread.current[:kredis_thread_namespace] = value
|
24
|
+
end
|
25
|
+
|
26
|
+
# Backward compatibility
|
27
|
+
alias_method :namespace=, :thread_namespace=
|
28
|
+
|
12
29
|
def namespaced_key(key)
|
13
30
|
namespace ? "#{namespace}:#{key}" : key
|
14
31
|
end
|
data/lib/kredis/railtie.rb
CHANGED
@@ -5,7 +5,7 @@ class Kredis::Railtie < ::Rails::Railtie
|
|
5
5
|
|
6
6
|
initializer "kredis.testing" do
|
7
7
|
ActiveSupport.on_load(:active_support_test_case) do
|
8
|
-
parallelize_setup { |worker| Kredis.
|
8
|
+
parallelize_setup { |worker| Kredis.global_namespace = [ Kredis.global_namespace, :test, worker ].compact.join("-") }
|
9
9
|
teardown { Kredis.clear_all }
|
10
10
|
end
|
11
11
|
end
|
data/lib/kredis/types/hash.rb
CHANGED
@@ -18,7 +18,7 @@ class Kredis::Types::Hash < Kredis::Types::Proxying
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def update(**entries)
|
21
|
-
hset entries.transform_values { |val| type_to_string(val, typed) } if entries.flatten.any?
|
21
|
+
hset entries.transform_values { |val| type_to_string(val, typed) }.compact if entries.flatten.any?
|
22
22
|
end
|
23
23
|
|
24
24
|
def values_at(*keys)
|
data/lib/kredis/types/set.rb
CHANGED
@@ -3,10 +3,13 @@
|
|
3
3
|
class Kredis::Types::Set < Kredis::Types::Proxying
|
4
4
|
prepend Kredis::DefaultValues
|
5
5
|
|
6
|
-
proxying :smembers, :sadd, :srem, :multi, :del, :sismember, :scard, :spop, :exists?, :srandmember
|
6
|
+
proxying :smembers, :sadd, :srem, :multi, :del, :sismember, :scard, :spop, :exists?, :srandmember, :smove
|
7
7
|
|
8
8
|
attr_accessor :typed
|
9
|
-
|
9
|
+
def move(set, member)
|
10
|
+
destination = set.respond_to?(:key) ? set.key : set
|
11
|
+
smove(destination, member)
|
12
|
+
end
|
10
13
|
def members
|
11
14
|
strings_to_types(smembers || [], typed).sort
|
12
15
|
end
|
data/lib/kredis/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kredis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kasper Timm Hansen
|
8
8
|
- David Heinemeier Hansson
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activesupport
|
@@ -73,7 +72,6 @@ dependencies:
|
|
73
72
|
- - ">="
|
74
73
|
- !ruby/object:Gem::Version
|
75
74
|
version: 6.0.0
|
76
|
-
description:
|
77
75
|
email: david@hey.com
|
78
76
|
executables: []
|
79
77
|
extensions: []
|
@@ -118,7 +116,6 @@ homepage: https://github.com/rails/kredis
|
|
118
116
|
licenses:
|
119
117
|
- MIT
|
120
118
|
metadata: {}
|
121
|
-
post_install_message:
|
122
119
|
rdoc_options: []
|
123
120
|
require_paths:
|
124
121
|
- lib
|
@@ -133,8 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
130
|
- !ruby/object:Gem::Version
|
134
131
|
version: '0'
|
135
132
|
requirements: []
|
136
|
-
rubygems_version: 3.
|
137
|
-
signing_key:
|
133
|
+
rubygems_version: 3.6.7
|
138
134
|
specification_version: 4
|
139
135
|
summary: Higher-level data structures built on Redis.
|
140
136
|
test_files: []
|