Class: Memcache::SegmentedServer
- Defined in:
- lib/memcache/segmented_server.rb
Constant Summary collapse
- MAX_SIZE =
bytes
1000000- PARTIAL_VALUE =
0x40000000
Constants inherited from Server
Memcache::Server::CONNECT_TIMEOUT, Memcache::Server::DEFAULT_PORT, Memcache::Server::READ_RETRY_DELAY
Instance Attribute Summary
Attributes inherited from Server
#host, #port, #retry_at, #status, #strict_reads
Instance Method Summary collapse
- #add(key, value, expiry = 0, flags = 0) ⇒ Object
- #cas(key, value, cas, expiry = 0, flags = 0) ⇒ Object
- #get(keys, opts = {}) ⇒ Object
- #replace(key, value, expiry = 0, flags = 0) ⇒ Object
- #set(key, value, expiry = 0, flags = 0) ⇒ Object
Methods inherited from Server
#alive?, #append, #close, #decr, #delete, #flush_all, #gets, #incr, #initialize, #inspect, #name, #prepend, #readonly?, #stats, #strict_reads?
Constructor Details
This class inherits a constructor from Memcache::Server
Instance Method Details
#add(key, value, expiry = 0, flags = 0) ⇒ Object
49 50 51 52 |
# File 'lib/memcache/segmented_server.rb', line 49 def add(key, value, expiry = 0, flags = 0) value, flags = store_segments(key, value, expiry, flags) super(key, value, expiry, flags) end |
#cas(key, value, cas, expiry = 0, flags = 0) ⇒ Object
44 45 46 47 |
# File 'lib/memcache/segmented_server.rb', line 44 def cas(key, value, cas, expiry = 0, flags = 0) value, flags = store_segments(key, value, expiry, flags) super(key, value, cas, expiry, flags) end |
#get(keys, opts = {}) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/memcache/segmented_server.rb', line 8 def get(keys, opts = {}) return get([keys], opts)[keys.to_s] unless keys.kind_of?(Array) return {} if keys.empty? results = super keys = {} keys_to_fetch = [] results.each do |key, value| next unless segmented?(value) hash, num = value.split(':') keys[key] = [] num.to_i.times do |i| hash_key = "#{hash}:#{i}" keys_to_fetch << hash_key keys[key] << hash_key end end parts = super(keys_to_fetch) keys.each do |key, hashes| value = '' hashes.each do |hash_key| value << parts[hash_key] end value.memcache_cas = results[key].memcache_cas value.memcache_flags = results[key].memcache_flags ^ PARTIAL_VALUE results[key] = value end results end |
#replace(key, value, expiry = 0, flags = 0) ⇒ Object
54 55 56 57 |
# File 'lib/memcache/segmented_server.rb', line 54 def replace(key, value, expiry = 0, flags = 0) value, flags = store_segments(key, value, expiry, flags) super(key, value, expiry, flags) end |
#set(key, value, expiry = 0, flags = 0) ⇒ Object
39 40 41 42 |
# File 'lib/memcache/segmented_server.rb', line 39 def set(key, value, expiry = 0, flags = 0) value, flags = store_segments(key, value, expiry, flags) super(key, value, expiry, flags) && value end |