simple_cacher 0.0.5 → 0.0.8

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
2
  SHA1:
3
- metadata.gz: d89750cb3682c47e4adcbe23204e8d85b3c2e1d0
4
- data.tar.gz: 77cc222d3ec377569b473cdbc1ee4699f2ad83bb
3
+ metadata.gz: 576f933f6320c8664f9a67d49b3698024c27029a
4
+ data.tar.gz: cadea424ed9eabc1bc1f9769244cffda813c3335
5
5
  SHA512:
6
- metadata.gz: 92105e8ea0aff68cb8354d1b788e3c6b5b14216aa1c20835b609d8f7c54f0e41e778f707007b444c5d87fd8095311e1ea03db44d2a3c1c70c7740e65464277b1
7
- data.tar.gz: ff4de7cc59e0a1adc227e5589466d5c5205bb880289664618c3d86d3c955705b31e46045667d4818f108a447a76fb41fed65927388eafb46a10363e7c8bf77b0
6
+ metadata.gz: cb0d74c12d9b6ed68af4318ee1fd7f3a1da9932378e63192efb44c197280478ff90a723e768e1c3bf08980541826951328f2c57a8055c9442780a894eb83e5ed
7
+ data.tar.gz: ca89b2abc33f7209fed03ffd46ec30817cb3ff239b1a2127724121b3ae48daf1015199cd4a97e110ac4fa7be1ffb122120de9fefff62f94636a4db7e7aa0fc71
data/lib/simple_cacher.rb CHANGED
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env ruby
2
1
  # -*- coding: utf-8 -*-
3
2
 
4
3
  class SimpleCacher
@@ -11,41 +10,59 @@ class SimpleCacher
11
10
  @namespace = Digest::MD5.new.update(namespace).to_s
12
11
  end
13
12
 
14
- def nskey(key)
15
- "#{namespace}:#{key}"
16
- end
17
-
18
13
  def import(key:)
19
14
  key = nskey(key)
20
15
 
21
- redis.exists(key) ? JSON.load(redis.get(key)) : nil
16
+ if redis.exists(key)
17
+ JSON.load(redis.get(key))
18
+ else
19
+ fail 'Key not exist, import failed!'
20
+ end
22
21
  end
23
22
 
24
23
  def export(key:, data: nil, expire: nil)
25
24
  key = nskey(key)
25
+ expire = Integer(expire) unless expire.nil?
26
+
27
+ if redis.setnx(key, data.to_json)
28
+ redis.expire(key, expire) unless expire.nil?
29
+ JSON.load(redis.get(key))
30
+ else
31
+ fail 'Key alreday exist in cacher, export failed!'
32
+ end
33
+ end
34
+
35
+ def expire!(key)
36
+ key = nskey(key)
26
37
 
27
- hash = redis.set(key, data.to_json)
28
- redis.expire(key, expire.to_i) unless expire.nil?
29
- hash
38
+ redis.expire(key, -1)
30
39
  end
31
40
 
32
41
  def reach_limit?(key:, limit:, expire: nil)
33
42
  key = nskey(key)
43
+ expire = Integer(expire) unless expire.nil?
44
+ limit = Integer(limit)
34
45
 
35
46
  if redis.exists(key)
36
- # 如果存在, 递增 1, 记录访问的次数.
37
- redis.incr(key)
47
+ redis.incr(key) > limit ? true : false
38
48
  else
39
49
  redis.set(key, '1')
40
- redis.expire(key, expire.to_i) unless expire.nil?
50
+ redis.expire(key, expire) unless expire.nil?
51
+ false
41
52
  end
42
-
43
- redis.get(key).to_i > limit ? true : false
44
53
  end
45
54
 
46
55
  def fresh?(key:)
47
- (Rails.env.production? or Rails.env.test?) &&
48
- redis.exists(nskey(key))
56
+ # if in develpment mode, not use cache
57
+ return false if defined?(Rails) && Rails.env.development?
58
+
59
+ redis.exists(nskey(key))
49
60
  end
50
61
  alias exists? fresh?
62
+
63
+ private
64
+
65
+ def nskey(key)
66
+ "#{namespace}:#{key}"
67
+ end
51
68
  end
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  module SimpleCacher
5
- VERSION = [0, 0, 5]
5
+ VERSION = [0, 0, 8]
6
6
 
7
7
  class << VERSION
8
8
  def to_s
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_cacher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Billy.Zheng(zw963)