Created
June 13, 2016 12:55
-
-
Save lucasmartins/83b227140dd319c670b71635fd3aca2e to your computer and use it in GitHub Desktop.
Ruby in memory processing "cache", used to replace Redis.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'thread_safe' | |
# A process wide cache for in memory computing | |
class MX::Core::Cache | |
def self.init! | |
@data = ThreadSafe::Cache.new unless @data | |
end | |
def self.truncate! | |
@data = ThreadSafe::Cache.new if Rails.env.test? | |
end | |
def self.destroy_bucket(keyspace) | |
@data[keyspace] = nil | |
end | |
def self.add(bucket='default', key, value) | |
# puts "add [#{value}] to #{bucket}:#{key}" | |
@data[bucket] = ThreadSafe::Cache.new unless @data[bucket] | |
if @data[bucket][key] | |
@data[bucket][key] += value | |
else | |
@data[bucket][key] = value | |
end | |
end | |
def self.set(bucket='default', key, value) | |
@data[bucket] = ThreadSafe::Cache.new unless @data[bucket] | |
@data[bucket][key] = value | |
end | |
def self.get(bucket='default', key) | |
# puts "get #{bucket}:#{key}" | |
begin | |
# puts "got #{@data[bucket][key]}" | |
@data[bucket][key] | |
rescue Exception => e | |
nil | |
end | |
end | |
def self.bucket(bucket='default') | |
begin | |
@data[bucket] | |
rescue Exception => e | |
nil | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment