Module: Memcache::Segmented
- Included in:
- SegmentedNativeServer, SegmentedServer
- Defined in:
- lib/memcache/segmented.rb
Constant Summary collapse
- MAX_SIZE =
bytes
1000000
- PARTIAL_VALUE =
0x40000000
Instance Method Summary collapse
- #add(key, value, expiry = 0, flags = 0) ⇒ Object
- #cas(key, value, cas, expiry = 0, flags = 0) ⇒ Object
- #delete(key) ⇒ Object
- #get(keys, cas = nil) ⇒ Object
- #replace(key, value, expiry = 0, flags = 0) ⇒ Object
- #set(key, value, expiry = 0, flags = 0) ⇒ Object
Instance Method Details
#add(key, value, expiry = 0, flags = 0) ⇒ Object
56 57 58 59 |
# File 'lib/memcache/segmented.rb', line 56 def add(key, value, expiry = 0, flags = 0) hash, flags = store_segments(key, value, expiry, flags) super(key, hash, expiry, flags) && value end |
#cas(key, value, cas, expiry = 0, flags = 0) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/memcache/segmented.rb', line 49 def cas(key, value, cas, expiry = 0, flags = 0) delete(key) do hash, flags = store_segments(key, value, expiry, flags) super(key, hash, cas, expiry, flags) && value end end |
#delete(key) ⇒ Object
68 69 70 71 72 73 74 75 |
# File 'lib/memcache/segmented.rb', line 68 def delete(key) value = super_get(key) result = block_given? ? yield : super if result and segmented?(value) segment_keys(value).each {|k| super(k)} end result end |
#get(keys, cas = nil) ⇒ 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 38 39 40 |
# File 'lib/memcache/segmented.rb', line 8 def get(keys, cas = nil) return get([keys], cas)[keys.to_s] unless keys.kind_of?(Array) return {} if keys.empty? results = super(keys, cas) keys = {} keys_to_fetch = [] results.each do |key, value| next unless segmented?(value) keys[key] = segment_keys(value) keys_to_fetch.concat keys[key] end parts = super(keys_to_fetch) keys.each do |key, hashes| value = '' hashes.each do |hash_key| if part = parts[hash_key] value << part else value = nil break end end if value value.memcache_cas = results[key].memcache_cas value.memcache_flags = results[key].memcache_flags ^ PARTIAL_VALUE end results[key] = value end results end |
#replace(key, value, expiry = 0, flags = 0) ⇒ Object
61 62 63 64 65 66 |
# File 'lib/memcache/segmented.rb', line 61 def replace(key, value, expiry = 0, flags = 0) delete(key) do hash, flags = store_segments(key, value, expiry, flags) super(key, hash, expiry, flags) && value end end |
#set(key, value, expiry = 0, flags = 0) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/memcache/segmented.rb', line 42 def set(key, value, expiry = 0, flags = 0) delete(key) do hash, flags = store_segments(key, value, expiry, flags) super(key, hash, expiry, flags) && value end end |