libmemcached_store 0.9.0 → 0.10.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d6640a808c446950da52f6d7276241a6fa2f11e675564afbe9f2300e968e55ea
|
4
|
+
data.tar.gz: af0d711fa82540e1dded2d6ce7a3d9dbf6311a269645ffdacbd744c73c6e783b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc2be35a5c0e401bddb5af06f6c06859734708228ba69cc1f92a1287c3de60a62e7efb3364cd4508977eaddd4a86789ef8f84c9b1b366fb92bbf0f0d9b04d193
|
7
|
+
data.tar.gz: 3a559423aff027fb95d7de114f6b56775b7386a89dc6fd807731912603f6e8b0ddd1e8fd7749892a29f27cc822da345a1ccda128dc4e9729d525acc4db2f393d
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'memcached'
|
2
|
-
require '
|
2
|
+
require 'libmemcached_store/memcached_with_flags'
|
3
3
|
|
4
4
|
require 'digest/md5'
|
5
5
|
|
@@ -23,10 +23,6 @@ module ActiveSupport
|
|
23
23
|
# :client => { :no_block => true }
|
24
24
|
#
|
25
25
|
class LibmemcachedStore
|
26
|
-
class MemcachedWithFlags < Memcached
|
27
|
-
include GetWithFlags
|
28
|
-
end
|
29
|
-
|
30
26
|
class FetchWithRaceConditionTTLEntry
|
31
27
|
attr_accessor :value, :extended
|
32
28
|
|
@@ -82,7 +78,7 @@ module ActiveSupport
|
|
82
78
|
|
83
79
|
@options = {compress_threshold: DEFAULT_COMPRESS_THRESHOLD}.merge(options)
|
84
80
|
@addresses = addresses
|
85
|
-
@cache = MemcachedWithFlags.new(@addresses, DEFAULT_CLIENT_OPTIONS.merge(client_options))
|
81
|
+
@cache = ::LibmemcachedStore::MemcachedWithFlags.new(@addresses, DEFAULT_CLIENT_OPTIONS.merge(client_options))
|
86
82
|
end
|
87
83
|
|
88
84
|
def fetch(key, options = nil, &block)
|
@@ -295,7 +291,8 @@ module ActiveSupport
|
|
295
291
|
value
|
296
292
|
end
|
297
293
|
|
298
|
-
|
294
|
+
# TODO: support namespace or other things passed as option
|
295
|
+
def normalize_key(key, _options = nil)
|
299
296
|
escape_and_normalize(expanded_key(key))
|
300
297
|
end
|
301
298
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#
|
2
|
+
# Allow get method to returns value + entry's flags
|
3
|
+
# This is useful to set compression flag.
|
4
|
+
#
|
5
|
+
|
6
|
+
require 'memcached'
|
7
|
+
|
8
|
+
module LibmemcachedStore
|
9
|
+
class MemcachedWithFlags < Memcached
|
10
|
+
def get(keys, decode=true, with_flags=false)
|
11
|
+
if keys.is_a? Array
|
12
|
+
# inlined multi_get with changes to make it return flags and ignore cas
|
13
|
+
ret = Lib.memcached_mget(@struct, keys)
|
14
|
+
check_return_code(ret, keys)
|
15
|
+
|
16
|
+
hash = {}
|
17
|
+
flags_hash = {} if with_flags
|
18
|
+
value, key, flags, ret = Lib.memcached_fetch_rvalue(@struct)
|
19
|
+
while ret != 21 do # Lib::MEMCACHED_END
|
20
|
+
if ret == 0 # Lib::MEMCACHED_SUCCESS
|
21
|
+
flags_hash[key] = flags if with_flags
|
22
|
+
hash[key] = decode ? [value, flags] : value
|
23
|
+
elsif ret != 16 # Lib::MEMCACHED_NOTFOUND
|
24
|
+
check_return_code(ret, key)
|
25
|
+
end
|
26
|
+
value, key, flags, ret = Lib.memcached_fetch_rvalue(@struct)
|
27
|
+
end
|
28
|
+
if decode
|
29
|
+
hash.each do |key, value_and_flags|
|
30
|
+
hash[key] = @codec.decode(key, *value_and_flags)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# actual code we need
|
35
|
+
with_flags ? [hash, flags_hash] : hash
|
36
|
+
else
|
37
|
+
result = single_get(keys, decode)
|
38
|
+
with_flags ? result.first(2) : result.first
|
39
|
+
end
|
40
|
+
rescue => e
|
41
|
+
tries ||= 0
|
42
|
+
raise unless tries < options[:exception_retry_limit] && should_retry(e)
|
43
|
+
tries += 1
|
44
|
+
retry
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libmemcached_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Cocchi-Perrier
|
@@ -10,22 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2018-04-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: memcached
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - "
|
19
|
+
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 1.8.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- - "
|
26
|
+
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
28
|
+
version: 1.8.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rack
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,6 +131,9 @@ dependencies:
|
|
131
131
|
- - ">="
|
132
132
|
- !ruby/object:Gem::Version
|
133
133
|
version: '3'
|
134
|
+
- - "<"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '5'
|
134
137
|
type: :development
|
135
138
|
prerelease: false
|
136
139
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -138,6 +141,9 @@ dependencies:
|
|
138
141
|
- - ">="
|
139
142
|
- !ruby/object:Gem::Version
|
140
143
|
version: '3'
|
144
|
+
- - "<"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '5'
|
141
147
|
- !ruby/object:Gem::Dependency
|
142
148
|
name: actionpack
|
143
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,6 +151,9 @@ dependencies:
|
|
145
151
|
- - ">="
|
146
152
|
- !ruby/object:Gem::Version
|
147
153
|
version: '3'
|
154
|
+
- - "<"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '5'
|
148
157
|
type: :development
|
149
158
|
prerelease: false
|
150
159
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -152,6 +161,23 @@ dependencies:
|
|
152
161
|
- - ">="
|
153
162
|
- !ruby/object:Gem::Version
|
154
163
|
version: '3'
|
164
|
+
- - "<"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '5'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: single_cov
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
155
181
|
description: |-
|
156
182
|
An ActiveSupport cache store that uses the C-based libmemcached client through
|
157
183
|
Evan Weaver's Ruby/SWIG wrapper, memcached. libmemcached is fast, lightweight,
|
@@ -165,8 +191,8 @@ files:
|
|
165
191
|
- lib/active_support/cache/libmemcached_local_store.rb
|
166
192
|
- lib/active_support/cache/libmemcached_store.rb
|
167
193
|
- lib/libmemcached_store.rb
|
168
|
-
- lib/
|
169
|
-
- lib/
|
194
|
+
- lib/libmemcached_store/memcached_with_flags.rb
|
195
|
+
- lib/libmemcached_store/version.rb
|
170
196
|
homepage: https://github.com/ccocchi/libmemcached_store
|
171
197
|
licenses:
|
172
198
|
- MIT
|
@@ -179,7 +205,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
205
|
requirements:
|
180
206
|
- - ">="
|
181
207
|
- !ruby/object:Gem::Version
|
182
|
-
version: 2.
|
208
|
+
version: 2.2.0
|
183
209
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
210
|
requirements:
|
185
211
|
- - ">="
|
@@ -187,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
213
|
version: '0'
|
188
214
|
requirements: []
|
189
215
|
rubyforge_project:
|
190
|
-
rubygems_version: 2.
|
216
|
+
rubygems_version: 2.7.3
|
191
217
|
signing_key:
|
192
218
|
specification_version: 4
|
193
219
|
summary: ActiveSupport 3+ cache store for the C-based libmemcached client
|
@@ -1,42 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Allow get method to returns value + entry's flags
|
3
|
-
# This is useful to set compression flag.
|
4
|
-
#
|
5
|
-
module GetWithFlags
|
6
|
-
def get(keys, marshal=true, with_flags=false)
|
7
|
-
if keys.is_a? Array
|
8
|
-
# Multi get
|
9
|
-
ret = Memcached::Lib.memcached_mget(@struct, keys);
|
10
|
-
check_return_code(ret, keys)
|
11
|
-
|
12
|
-
hash, flags_hash = {}, {}
|
13
|
-
value, key, flags, ret = Memcached::Lib.memcached_fetch_rvalue(@struct)
|
14
|
-
while ret != 21 do # Lib::MEMCACHED_END
|
15
|
-
if ret == 0 # Lib::MEMCACHED_SUCCESS
|
16
|
-
hash[key] = value
|
17
|
-
flags_hash[key] = flags if with_flags
|
18
|
-
elsif ret != 16 # Lib::MEMCACHED_NOTFOUND
|
19
|
-
check_return_code(ret, key)
|
20
|
-
end
|
21
|
-
value, key, flags, ret = Memcached::Lib.memcached_fetch_rvalue(@struct)
|
22
|
-
end
|
23
|
-
if marshal
|
24
|
-
hash.each do |key, value|
|
25
|
-
hash[key] = Marshal.load(value)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
with_flags ? [hash, flags_hash] : hash
|
29
|
-
else
|
30
|
-
# Single get
|
31
|
-
value, flags, ret = Memcached::Lib.memcached_get_rvalue(@struct, keys)
|
32
|
-
check_return_code(ret, keys)
|
33
|
-
value = Marshal.load(value) if marshal
|
34
|
-
with_flags ? [value, flags] : value
|
35
|
-
end
|
36
|
-
rescue => e
|
37
|
-
tries ||= 0
|
38
|
-
raise unless tries < options[:exception_retry_limit] && should_retry(e)
|
39
|
-
tries += 1
|
40
|
-
retry
|
41
|
-
end
|
42
|
-
end
|