这是一个用Redis存储好友关系的python下使用Redis的例子。作者是Eric Florenzano (@ericflo)。相信对各位人生苦短用python的同学是一个好的入门例子。
例子说明:其中虽然用了follow和block等字眼,但是他的关系不是一个微博系统的单向关注,而是类似SNS的双向关系。
"""
I've been thinking lately about how perfect Redis would be for storing a
simple social graph. I posited that it would be relatively few lines of code,
and that it'd be clean code too. So here it is: a basic social graph built on Redis.
"""
class FriendGraph(object):
def __init__(self, ring):
self.ring = ring
# These keys are intentionally short, so as to save on memory in redis
self.FOLLOWS_KEY = 'F'
self.FOLLOWERS_KEY = 'f'
self.BLOCKS_KEY = 'B'
self.BLOCKED_KEY = 'b'
def follow(self, from_user, to_user):
forward_key = '%s:%s' % (self.FOLLOWS_KEY, from_user)
forward = self.ring.sadd(forward_key, to_user)
reverse_key = '%s:%s' % (self.FOLLOWERS_KEY, to_user)
reverse = self.ring.sadd(reverse_key, from_user)
return forward and reverse
def unfollow(self, from_user, to_user):
forward_key = '%s:%s' % (self.FOLLOWS_KEY, from_user)
forward = self.ring.srem(forward_key, to_user)
reverse_key = '%s:%s' % (self.FOLLOWERS_KEY, to_user)
reverse = self.ring.srem(reverse_key, from_user)
return forward and reverse
def block(self, from_user, to_user):
forward_key = '%s:%s' % (self.BLOCKS_KEY, from_user)
forward = self.ring.sadd(forward_key, to_user)
reverse_key = '%s:%s' % (self.BLOCKED_KEY, to_user)
reverse = self.ring.sadd(reverse_key, from_user)
return forward and reverse
def unblock(self, from_user, to_user):
forward_key = '%s:%s' % (self.BLOCKS_KEY, from_user)
forward = self.ring.srem(forward_key, to_user)
reverse_key = '%s:%s' % (self.BLOCKED_KEY, to_user)
reverse = self.ring.srem(reverse_key, from_user)
return forward and reverse
def get_follows(self, user):
follows = self.ring.smembers('%s:%s' % (self.FOLLOWS_KEY, user))
blocked = self.ring.smembers('%s:%s' % (self.BLOCKED_KEY, user))
return list(follows.difference(blocked))
def get_followers(self, user):
followers = self.ring.smembers('%s:%s' % (self.FOLLOWERS_KEY, user))
blocks = self.ring.smembers('%s:%s' % (self.BLOCKS_KEY, user))
return list(followers.difference(blocks))
def get_blocks(self, user):
return list(self.ring.smembers('%s:%s' % (self.BLOCKS_KEY, user)))
def get_blocked(self, user):
return list(self.ring.smembers('%s:%s' % (self.BLOCKED_KEY, user)))
来自:
http://blog.nosqlfan.com/html/576.html
分享到:
相关推荐
Redis稳定版 Redis-x64-5.0.14.1.zip
Redis-x64-5.0.10.msi
Redis下载,Redis Server,Redis-x64-5.0.9.zip
文件夹内包括有Redis-x64-3.0.504.zip、Redis-x64-3.2.100.msi。可供大家下载安装。
Redis 64位window 版 Redis-x64-3.2.100
redis校验工具redis-full-check,配合redis-shake使用!!!
包含翻译后的API文档:flink-connector-redis_2.10-1.1.5-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.flink:flink-connector-redis_2.10:1.1.5; 标签:apache、flink、connector、redis、中文文档...
Redis在windows下安装过程 1.设置服务命令 redis-server --service-install redis.windows-service.conf --loglevel verbose 2 常用的redis服务命令。 卸载服务:redis-server --service-uninstall 开启服务:redis...
之前项目中要使用window下的redis。找了好久都只有Redis-x64-3.2.100的,后来发现有更高版本的。这里附件里面包括Redis-x64-5.0.14.1 for Windows版本 与及 原始下载地址。如果有新的版本的话,可以到在原始下载地址...
最新版windows Redis-x64-5.0.14.1.zip最新版windows Redis-x64-5.0.14.1.zip
Redis-x64-3.0.504安装包
Redis-x64-5.0.14 windows
Redis-x64-3.2.100版本,你们可以下载,如果实在没有积分可以私聊我。
最新版windows Redis-x64-5.0.14.zip最新版windows Redis-x64-5.0.14.zip
Redis-x64-5.0.14.1.msi Redis-x64-5.0.14.1.msi Redis-x64-5.0.14.1.msi
Redis-x64-3.2.100免安装版配置+linux版,包含windows版和linux版
Redis-x64-win-3.2.100+nginx-win
Redis版本:Redis-x64-5.0.14.1 管理工具:RESP_app
Windows版redis下载版本号Redis-x64-3.2.100,官网上下载需要到github上
Redis-x64-5.0.14.1 缓存程序,Windows系统可用文件