@@ -38,23 +38,25 @@ def get(keys, options = {}, &block)
38
38
end
39
39
40
40
def add ( key , value , options = { } )
41
- repository . add ( cache_key ( key ) , value , options [ :ttl ] || 0 , options [ :raw ] )
41
+ if repository . add ( cache_key ( key ) , value , options [ :ttl ] || 0 , options [ :raw ] ) == "NOT_STORED\r \n "
42
+ yield
43
+ end
42
44
end
43
45
44
46
def set ( key , value , options = { } )
45
47
repository . set ( cache_key ( key ) , value , options [ :ttl ] || 0 , options [ :raw ] )
46
48
end
47
49
48
50
def incr ( key , delta = 1 , ttl = 0 )
49
- repository . incr ( cache_key ( key ) , delta ) || begin
50
- repository . add ( cache_key ( key ) , ( result = yield ) . to_s , ttl , true )
51
+ repository . incr ( cache_key = cache_key ( key ) , delta ) || begin
52
+ repository . add ( cache_key , ( result = yield ) . to_s , ttl , true ) { repository . incr ( cache_key ) }
51
53
result
52
54
end
53
55
end
54
56
55
57
def decr ( key , delta = 1 , ttl = 0 )
56
- repository . decr ( cache_key ( key ) , delta ) || begin
57
- repository . add ( cache_key ( key ) , ( result = yield ) . to_s , ttl , true )
58
+ repository . decr ( cache_key = cache_key ( key ) , delta ) || begin
59
+ repository . add ( cache_key , ( result = yield ) . to_s , ttl , true ) { repository . decr ( cache_key ) }
58
60
result
59
61
end
60
62
end
0 commit comments