Skip to content

Instantly share code, notes, and snippets.

@evanscottgray
Created June 9, 2015 20:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save evanscottgray/ed220a9b166b36d827fa to your computer and use it in GitHub Desktop.
Save evanscottgray/ed220a9b166b36d827fa to your computer and use it in GitHub Desktop.
redis things
def create(check=@check_data)
key = self.class._make_key(@id)
redis_data = check.to_json
self.class.redis.multi do |m|
m.rpush(self.class._list_key, @id)
m.set(key, redis_data)
end
end
def destroy(id=@id)
key = self.class._make_key(id)
self.class.redis.multi do |m|
m.lrem(self.class._list_key, 0, id)
m.del(key)
end
end
def self.all
ids = redis.lrange(_list_key, '0', '-1')
keys = ids.collect {|x| _make_key(x)}
redis_data = redis.pipelined do |p|
keys.each do |key|
p.get(key)
end
end
redis_data.collect {|x| JSON.parse(x)}
end
def self.find_by_id(id)
key = _make_key(id)
redis_data = redis.get(key)
if redis_data.nil?
raise ArgumentError, 'Not Found'
else
d = JSON.parse(redis_data)
Check.new(d)
end
end
def self._save_order_data(check=@check_data)
key = _make_key(check.fetch('id'))
redis_data = redis.get(key)
data = JSON.parse(redis_data)
new_data = data.merge(check).to_json
redis.set(key, new_data)
end
def self._list_key
'checks'
end
def self._key_base
'check:%s'
end
def self._make_key(id)
if id == '' || id == nil
raise ArgumentError, 'ID Required for _make_key'
else
_key_base % id
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment