2016-10-25 1 views
0

J'ai fait face à un doute sur la façon d'utiliser r.evalsha sous rubis. Je peux obtenir des résultats sur CLI pour appeler Redis. Erreur me montre: tentative de concaténer locale « JNV » (une valeur booléenne)Comment appeler redis.evalsha

S'il vous plaît me conseiller.

Merci.

evalsha 0ca2da3beea9739f3d61798a36bd4d5ed56754ee 1 10.17.103.200 

Le testredis.rb comme à la suivante:

require 'rubygems' 
require 'redis' 
r = Redis.new(:host => '127.0.0.1', :port => '6379') 
$result = r.evalsha("0ca2da3beea9739f3d61798a36bd4d5ed56754ee", ['1'], ['10.17.103.200']) 
puts $result 
r.quit() 
+0

@for_stack, j'avais testé mon script lua manuellement sous CLI. Pas de pro pour ça – user647527

Répondre

0

Le Redis rubis joyau tente de nettoyer certaines choses pour vous. Vous n'avez pas besoin de transmettre le nombre d'arguments. Le deuxième argument à evalsha est un tableau d'arguments de script. Votre ligne evalsha devrait ressembler à ceci:

$result = r.evalsha("0ca2da3beea9739f3d61798a36bd4d5ed56754ee", ['10.17.103.200']) 

Pour charger un script à partir de rubis, vous pouvez utiliser Redis#script:

sha = r.script(:load, "return redis.call('incr', 'foo')") 
r.evalsha(sha) # => 1 
r.evalsha(sha) # => 2