in_memory_cache 0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7550d96162651e202ede0fd0b8672a4439e8eca791c9a9b8aef3f178f19514fe
4
+ data.tar.gz: cf16e84e42cc8d3edd7b6142222bfd69c663c7a3fdee0ca1ff392b077f9f032a
5
+ SHA512:
6
+ metadata.gz: cb0341fdba9f8f9e8477ff777bca46a6d33b8728b0554dfc36f187f22c1db3ef2f37141812a3085dfc7895a49049a7ea6f1c277444f327e2fb8f4962f249fb82
7
+ data.tar.gz: 6068b434a0f8b85d687809d3e4ec1a4ae4eaaf56cb48bac95df853bd6f80391f8ac3b6f3bfea3f4743a8ab4ee5a9179393d96be54182371b534ec124e9e72408
@@ -0,0 +1,50 @@
1
+ module MemoryCache
2
+ # A processor level in memory cache storage. Data is not across multiple processes. Thread-safe
3
+ class MemoryCacheStore
4
+ def initialize
5
+ @data = {}
6
+ @key_access_store = {}
7
+ @lock = Monitor.new
8
+ end
9
+
10
+
11
+ # write a key with value
12
+ # return true if success, false if any exception
13
+ def write(key, value, options = {})
14
+ synchronize_block do
15
+ @data[key] = value
16
+ @key_access_store[key] = Time.now.utc.to_i
17
+ return true
18
+ end
19
+ end
20
+
21
+ # read a key value from store
22
+ # return value of the key
23
+ def read(key, options = {})
24
+ synchronize_block do
25
+ @key_access_store[key] = Time.now.utc.to_i
26
+ return @data[key] ? @data[key].dup : nil
27
+ end
28
+ end
29
+
30
+ # delete key from store
31
+ def delete(key, options = {})
32
+ @data.delete(key)
33
+ @key_access_store.delete(key)
34
+ end
35
+
36
+ # Synchronize calls to the cache for thread safety
37
+ def synchronize_block(&block)
38
+ @lock.synchronize(&block)
39
+ end
40
+
41
+ # flushed the data store
42
+ def clear
43
+ synchronize_block do
44
+ @data.clear
45
+ @key_access_store.clear
46
+ end
47
+ end
48
+
49
+ end
50
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: in_memory_cache
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - kathir
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-03-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.17'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.17'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: A simple gem for in memory LRU cache
56
+ email: kathirvalavan.ict@gmail.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - lib/memory_cache/memory_cache_store.rb
62
+ homepage: https://rubygems.org/gems/memory_cache_store
63
+ licenses:
64
+ - MIT
65
+ metadata:
66
+ source_code_uri: https://github.com/kathirvalavan/in_memory_cache
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '2.3'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubygems_version: 3.0.8
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: Ruby In memory cache
86
+ test_files: []