Sha256: 5c422d3ae7556393e623fd1a0385b832d6dd9ef699bc1f332bee302174080515
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
# -*- coding: utf-8 -*- module Trahald require 'redis' require 'uri' class RedisClient < BackendBase # track all page names. KEY_SET = ".keys" # TODO: this must not be collided with any page names. # for using cache. MODIFIED_DATE = ".modified" # TODO: same def initialize(url) @redis = Redis.new(:url => url) @params = Hash.new end def article(name) json = @redis.zrange(name, -1, -1).first # nil unless zrange(..).any? if json; Article.from_json(json) else nil end end # This method does not set data to Redis DB. To confirm, use commit! after add!. def add!(name, body) @params[name] = body end def body(name) a = article name if a; a.body else nil end end # message is not used. def commit!(message) date = Time.now @params.each{|name, body| json = Article.new(name, body, date).to_json zcard = @redis.zcard name @redis.zadd name, zcard+1, json @redis.sadd KEY_SET, name } @redis.set MODIFIED_DATE, date.to_s end # CAUTION! This method flush data on current db. def flush! @redis.flushdb end def data @redis.smembers(KEY_SET).map do |name| a = article name MarkdownBody.new(name, a.body, a.date).summary end end def last_modified date = @redis.get(MODIFIED_DATE) if date; Time.parse date else Time.now end end def list @redis.smembers(KEY_SET).sort end def self.init_repo_if_needed(dir) # do nothing. end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
trahald-0.0.5 | lib/trahald/redis-client.rb |