ruby 具有命名空间和键的简单Redis持久性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 具有命名空间和键的简单Redis持久性相关的知识,希望对你有一定的参考价值。

# Classe que faz uma simples persistencia para o Redis, usando de métodos simples.
# @author Douglas Rossignolli
# @version 0.0.5
class RedisPersistence
	attr_accessor :redis
	def initialize			
		if Rails.env.production?
			ENV["REDISTOGO_URL"] ||= "<redis server uri>"
			uri = URI.parse(ENV["REDISTOGO_URL"])
			@redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
		else
		 	# assume que você tem instalado no seu ambiente o redis padrão rodando na porta padrão
			@redis = Redis.new
		end
	end

 	# O save usa do namespace para salvar uma nova chave ou atualizar
 	# @param  namespace [String]
 	# @param  key [String]
 	# @param  data [Object]
	def save namespace, key, data
		actual_data = JSON.parse(@redis.get namespace)
		actual_data[key] = data.to_json
		@redis.set namespace, actual_data.to_json
	end
  
 	# O delete recebe um name space e remove uma chave determinada
 	# @param  namespace [String]
 	# @param  key [String]
	def delete namespace, key
		actual_data = JSON.parse(@redis.get namespace)
		actual_data.delete key
		@redis.set namespace, actual_data.to_json
	end
	
  	# O find procura em um namespace uma determinada chave  
  	# @param  namespace [String]
  	# @param  key [String]
  	# @return [Hash]
	def find namespace, key
		actual_data = JSON.parse(@redis.get namespace)
		actual_data[key]
	end
  
	# O exists? verifica se uma determina chave existe dentro de um determinado namespace 
	# @param  namespace [String]
	# @param  key [String]
	# @return [Boolean]
	def exists? namespace, key
		actual_data = JSON.parse(@redis.get namespace)
		actual_data.key? key
	end

end

以上是关于ruby 具有命名空间和键的简单Redis持久性的主要内容,如果未能解决你的问题,请参考以下文章

具有复杂键的 Spring Data Redis 存储库

ruby 具有命名空间的资源

Spring数据Cassandra可以与动态模​​型和键空间一起使用吗

Redis设计与实现-持久化篇

redis键重命名

带有对象和键的 UIPicker 使用 JSON