ホームページ データベース Redis Redis を使用して Python で友人関係を保存する方法

Redis を使用して Python で友人関係を保存する方法

May 27, 2023 pm 03:19 PM
python redis

私は最近、

単純なソーシャル グラフを保存するのに 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

GOに効率的なキー値ペアストレージを実装する最良の方法は何ですか? GOに効率的なキー値ペアストレージを実装する最良の方法は何ですか? Apr 02, 2025 pm 01:54 PM

GO言語で効率的なキー価値ペアストレージを実装する正しい方法GO言語でRedisと同様のキー値ペアメモリを開発するときに最高のパフォーマンスを実現する方法...

MySQLとRedisの間のデータの一貫性のソリューションを選択する方法:遅延した二重削除と最初にデータベースの変更とキャッシュと適用可能なシナリオの削除の違いは? MySQLとRedisの間のデータの一貫性のソリューションを選択する方法:遅延した二重削除と最初にデータベースの変更とキャッシュと適用可能なシナリオの削除の違いは? Apr 02, 2025 am 11:57 AM

MySQLとRedisの間のデータの一貫性に関する2つのソリューション:ダブル削除の遅延と最初にデータベースの変更、次にキャッシュの削除を使用して、MySQLとRedisのデータの一貫性の問題を処理するために使用されます。

XMLの変更にはプログラミングが必要ですか? XMLの変更にはプログラミングが必要ですか? Apr 02, 2025 pm 06:51 PM

XMLコンテンツを変更するには、ターゲットノードの正確な検出が必要であるため、プログラミングが必要です。プログラミング言語には、XMLを処理するための対応するライブラリがあり、APIを提供して、データベースの運用などの安全で効率的で制御可能な操作を実行します。

XMLのコメントコンテンツを変更する方法 XMLのコメントコンテンツを変更する方法 Apr 02, 2025 pm 06:15 PM

小さなXMLファイルの場合、注釈コンテンツをテキストエディターに直接置き換えることができます。大きなファイルの場合、XMLパーサーを使用してそれを変更して、効率と精度を確保することをお勧めします。 XMLコメントを削除するときは注意してください。コメントを維持すると、通常、コードの理解とメンテナンスが役立ちます。高度なヒントは、XMLパーサーを使用してコメントを変更するためのPythonサンプルコードを提供しますが、特定の実装を使用するXMLライブラリに従って調整する必要があります。 XMLファイルを変更する際のエンコード問題に注意してください。 UTF-8エンコードを使用して、エンコード形式を指定することをお勧めします。

XMLでSAXを使用してコンテンツを変更する方法 XMLでSAXを使用してコンテンツを変更する方法 Apr 02, 2025 pm 06:39 PM

XMLをSAXで変更することは、次の手順を含むイベントベースの戦略です。XMLコンテンツを読み、要素イベントをリッスンします。要素を変更する必要があるかどうかを判断します。テキストイベントで変更します。 End Elementイベントに変更されたコンテンツを記述します。

XMLでノードコンテンツを変更する方法 XMLでノードコンテンツを変更する方法 Apr 02, 2025 pm 07:21 PM

XMLノードコンテンツの変更スキル:1。ElementTreeモジュールを使用して、ノード(findall()、find())を見つけます。 2。テキスト属性を変更します。 3. Xpath式を使用して、それらを正確に見つけます。 4。エンコード、名前空間、例外処理を検討します。 5。パフォーマンスの最適化に注意してください(繰り返しのトラバーサルを避けてください)

画像に変換されたXMLのサイズを制御する方法は? 画像に変換されたXMLのサイズを制御する方法は? Apr 02, 2025 pm 07:24 PM

XMLを介して画像を生成するには、XMLのメタデータ(サイズ、色)に基づいて画像を生成するために、ブリッジとしてグラフライブラリ(枕やJFreechartなど)を使用する必要があります。画像のサイズを制御するための鍵は、< width>の値を調整することです。および< height> XMLのタグ。ただし、実際のアプリケーションでは、XML構造の複雑さ、グラフ描画の細かさ、画像生成の速度とメモリ消費の速度、および画像形式の選択はすべて、生成された画像サイズに影響を与えます。したがって、グラフィックライブラリに熟練したXML構造を深く理解し、最適化アルゴリズムや画像形式の選択などの要因を考慮する必要があります。

See all articles