diff --git a/hexlib/db.py b/hexlib/db.py index 58093ff..6d47e41 100644 --- a/hexlib/db.py +++ b/hexlib/db.py @@ -29,6 +29,20 @@ class VolatileState: return RedisTable(self, table) +class VolatileQueue: + """Quick and dirty volatile queue-like redis wrapper""" + + def __init__(self, key, **redis_args): + self.rdb = redis.Redis(**redis_args) + self.key = key + + def put(self, item): + self.rdb.sadd(self.key, item) + + def get(self): + return self.rdb.spop(self.key) + + class VolatileBooleanState: """Quick and dirty volatile dict-like redis wrapper for boolean values""" diff --git a/setup.py b/setup.py index 3c2d59d..86b504b 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup( name="hexlib", - version="1.24", + version="1.25", description="Misc utility methods", author="simon987", author_email="me@simon987.net", diff --git a/test/test_VolatileState.py b/test/test_VolatileState.py index c78fcce..4f8f8eb 100644 --- a/test/test_VolatileState.py +++ b/test/test_VolatileState.py @@ -1,5 +1,5 @@ from unittest import TestCase -from hexlib.db import VolatileState, VolatileBooleanState +from hexlib.db import VolatileState, VolatileBooleanState, VolatileQueue class TestVolatileState(TestCase): @@ -23,7 +23,7 @@ class TestVolatileState(TestCase): s["b"]["3"] = 3 s["b"]["4"] = 4 - self.assertEqual(sum(v for k,v in s["b"]), 10) + self.assertEqual(sum(v for k, v in s["b"]), 10) def test_int_key(self): s = VolatileState(prefix="test2") @@ -68,3 +68,14 @@ class TestVolatileBoolState(TestCase): self.assertTrue(s["c"]["1"]) del s["c"]["1"] self.assertFalse(s["c"]["1"]) + + +class TestVolatileQueue(TestCase): + + def test_simple(self): + s = VolatileQueue(key="test5") + + s.put("test") + item = s.get() + + self.assertTrue(item == b"test")