私は最近、
単純なソーシャル グラフを保存するのに Redis がどれほど完璧であるかについて考えています。私は、これは比較的少ないコード行であり、
そしてクリーンなコードになるだろうと仮定しました。 Redis 上に構築された基本的なソーシャル グラフです。
# self.ring =ring# # これらのキーは、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)self.ring.sadd(reverse_key, from_user) = reverse 順方向と逆方向に戻ります 怎样用Redis存储好友关系-python版 # 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)下は一重写的方式: 指定されたユーザをサイクルから除外し、操作後のサイクルは「リバース」と呼ばれ、除外されたユーザを返します。 「」パイソン Remove_user = self.ring.srem(reverse_key, from_user) reverse = self.ring # 删削除操作後のコールをリバースします ``` 順方向と逆方向に戻る 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)self .ring.sadd(reverse_key, from_user) = reverse forwardと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) )次は再書き込みの方法です: 指定されたユーザをサイクルから除外し、操作後のサイクルは「リバース」と呼ばれ、除外されたユーザを返します。 「」パイソン Remove_user = self.ring.srem(reverse_key, from_user) reverse = self.ring # 删削除操作後のコールをリバースします ``` 順方向と逆方向に戻る 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(ブロックされました))# 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)))
以上がRedis を使用して Python で友人関係を保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。