2013-08-27 25 views
5

Sto usando redis-py e voglio usare -inf e inf con ZRANGEBYSCORE. Ho provato a farlo usando string e float di inf, ma quelli restituiscono un set vuoto. Come posso fare questo?come posso passare infinito a redis da python?

EDIT

Ho provato a fare il seguente comando:

redis.StrictRedis.ZRANGEBYSCORE("SORTEDSET", "-inf", "inf") 

o

redis.StrictRedis.ZRANGEBYSCORE("SORTEDSET", float("-inf"), float("inf")) 

UPDATE Il mio errore è stato che la mia astrazione per zrangebyscore stava usando zrange per errore ... inf funziona come indicato di seguito.

+0

puoi pubblicare il segmento di codice si è tentato, proprio quello di comando? – blakev

+0

pubblicato campione sopra – postelrich

risposta

8

Questo è il mio codice è stato testato:

import unittest 

from redis import Redis 


class RedisTest(unittest.TestCase): 

    def setUp(self): 
     self.redis = Redis() 

    def test_zrangebyscore(self): 
     r = self.redis 
     name = 'myset' 
     r.zadd(name, 'one', 1) 
     r.zadd(name, 'two', 2) 
     r.zadd(name, 'three', 3) 
     r.zadd(name, 'four', 4) 

     self.assertTrue(r.zrangebyscore(name, '-inf', '+inf') == ['one', 'two', 'three', 'four']) 
     self.assertTrue(r.zrangebyscore(name, 1, 1) == ['one']) 
     self.assertTrue(r.zrangebyscore(name, 1, 2) == ['one', 'two']) 
     self.assertTrue(r.zrangebyscore(name, 2, 3) == ['two', 'three']) 
     self.assertTrue(r.zrangebyscore(name, '(1', '(2') == []) 
     self.assertTrue(r.zrangebyscore(name, '(1', '(3') == ['two']) 
+0

sì funziona grazie, la mia astrazione stava usando zrange per errore. – postelrich