Skip to content

Instantly share code, notes, and snippets.

Created June 15, 2012 21:48
Show Gist options
  • Save anonymous/2938860 to your computer and use it in GitHub Desktop.
Save anonymous/2938860 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import random
import redis
def adjust_score(score):
return score + random.choice([-0.5, +0.5])
def store_set(set_x, key, cli):
for i, element in enumerate(set_x):
score = i + 1 # enumarate starts from 0, we want positive values only
adj_score = adjust_score(score)
cli.zadd(key, element, adj_score)
return key
def merge(set_a, set_b, cli):
key_a = id(set_a)
key_b = id(set_b)
key_merged = '%s:%s' % (key_a, key_b)
store_set(set_a, key_a, cli)
store_set(set_b, key_b, cli)
cli.zunionstore(key_merged, {key_a: 1, key_b: 1})
print "%s U %s => %s" % (key_a, key_b, key_merged)
return key_merged
def demo(set_a, set_b):
print "Set A: %s" % (set_a,)
print "Set B: %s" % (set_b,)
cli = redis.Redis()
key_merged = merge(set_a, set_b, cli)
set_merged = cli.zrange(key_merged, 0, -1)
print "Merged set: %s" % (set_merged,)
if __name__ == '__main__':
demo(
['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10', 'a11'],
['b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'b10', 'b11'])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment