商城首页欢迎来到中国正版软件门户

您的位置:首页 > 编程开发 >python中如何使用Redis存储好友关系

python中如何使用Redis存储好友关系

  发布于2023-04-28 阅读(0)

扫一扫,手机访问

  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

  怎样用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)

  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)))

本文转载于:https://www.yisu.com/zixun/357444.html 如有侵犯,请联系admin@zhengruan.com删除

热门关注