Spring Boot、AOP、Luaを使用した分散型レートリミットの実践的実装

一、レートリミットとは?なぜレートリミットが必要なのか? 皆さんは北京の地下鉄に乗ったことがありますか?入場時に長蛇の列ができるのはなぜでしょうか?答えは「レートリミット」です!地下鉄の輸送能力には限界があり、一度に多くの乗客が乗り込むとプラットフォームが混雑し、列車が過剰な乗客を乗せてしまうと安全上の問題が発生します。同様に、私たちのプログラ ...

7月5日 22:53 投稿

PhpSpreadsheetのメモリ最適化とPHPExcelからの移行手法

メモリ使用量の削減 PhpSpreadsheetはワークシートごとに各セルあたり約1KBのメモリを消費するため、大規模なブックでは迅速にメモリを消費します。セルキャッシュ機能により、PhpSpreadsheetはセルオブジェクトをメモリ内だけでなく、ディスクやAPCu、Redisなどの外部ストレージに保持できるようになります。これにより大規模ブックのメモリ使用量を削減できますが、デー ...

7月5日 21:09 投稿

Spring BootでのLettuceを用いたRedis統合ガイド

一、Lettuceについて Redisサーバーについては、以前のブログ記事で既に触れていますので、ここでは詳細を割愛します。LettuceとJedisは両方ともRedisサーバーに接続するクライアントプログラムですが、実装方法が異なります。JedisはRedisサーバーに直接接続しますが、マルチスレッド環境ではスレッドセーフではないため、接続プールを使用する必要があります。各Jedisイ ...

7月4日 20:06 投稿

Docker ネットワーク構成とセキュリティの実践ガイド

Docker ネットワークの基本概念 コンテナ間の効率的かつ安全な通信を実現するには、Dockerネットワークの仕組みを理解することが重要です。ネットワーク構成は、情報が適切に流れるための基盤となります。 主要な基礎知識 Dockerネットワークは、コンテナの接続と相互作用の方法を定義する重要な要素です。 ネットワーク名前空間: 各コンテナは独立したネットワーク環境 ...

7月4日 16:45 投稿

RedisにおけるSet操作の基礎

RedisのSetは、String型の重複を許さない無順序の集合です。各要素は一意であり、同じデータが複数存在することはできません。 RedisのSetはハッシュテーブルによって実装されており、追加、削除、検索の時間計算量は全てO(1)です。また、最大で232-1(4,294,967,295)個のメンバーを格納可能です。 1. 要素の追加 コマンド: sadd 形式: sadd キー メンバー1 [メンバー2] ...

7月3日 18:29 投稿

Redis GEO 地理位置データ型の概要と使用方法

GEO 地理位置データ型 Redis 3.2 では、GEO という新しいデータ型が導入されました。これは主に地理的位置情報を保存し、その情報に基づいて操作を行うためのものです。 GEO の基本概念 GEO は順序付き集合(zset)であり、各要素には以下の属性があります: 位置名 (member) 経度 (longitude) 緯度 (latitude) これらの属性を使用して、Redis で地理的位置の座 ...

7月1日 22:14 投稿

Redis永続化の完全ガイド:RDBとAOFの仕組みと使い方

Redisはインメモリデータベースであり、サーバープロセスが終了するとメモリ内のデータも消失してしまいます。この問題を解決するため、Redisにはデータをディスクに保存する永続化機能が備わっています。 RDB(Redis Database) RDBはRedis Databaseの略で、指定した時間間隔でメモリ上のデータセットのスナップショットをディスクに書き込む仕組みです。リカバリ時はこ ...

7月1日 18:39 投稿

Redisの高速性の理由

質問:Redisは本当にどれほどの高速性を持っているのか? Redisに付属のbenchmarkスクリプトを使用してテストする: cd /usr/local/soft/redis-6.0.9/src redis-benchmark -t set,lpush -n 100000 -q 結果: SET: 136239.78 requests per second — 秒あたり13万回以上のsetリクエストを処理 LPUSH: 132626.00 requests per second — 秒あたり13万回以上のlpushリクエスト ...

7月1日 17:57 投稿

Djangoでユーザー認証を実装する - ログイン機能の構築

Djangoの認証システムの利用 1. ユーザー認証処理 入力されたパスワードの検証にはDjangoのauthenticateメソッドを使用します。認証成功時はUserオブジェクトを、失敗時はNoneを返却します。 from django.contrib.auth import authenticate account = authenticate(username=入力ID, password=入力パスワード) if account is None: self.context['エラーメッセージ'] ...

7月1日 17:50 投稿

Redisレプリケーション構成と読み書き分離の実装ガイド

レプリケーション環境の構築 Dockerを使用してRedisのマスター・スレーブ構成を構築します。以下、Redis 6.0.3イメージを使用します。 docker pull redis:6.0.3 マスターノード設定 IP: 192.168.0.100、ポート: 6378 bind 0.0.0.0 port 6378 requirepass mySecretPass daemonize yes appendonly no save "" protected-mode no repl-diskless-sync no スレーブノー ...

7月1日 17:00 投稿