Redis melaksanakan pengehadan semasa dan menggunakan algoritma baldi token dan algoritma tetingkap gelongsor. Algoritma baldi token mengehadkan permintaan masuk dan algoritma tetingkap gelongsor merekodkan bilangan permintaan dalam tempoh masa tertentu dan menentukan sama ada ia melebihi ambang. Redis menggunakan perintah incr/decr untuk mengendalikan baldi token dan menggunakan perintah masa dan incrby untuk merekodkan bilangan permintaan tetingkap gelongsor. Konfigurasi pengehad semasa dilaksanakan melalui perintah set dan konfigurasi Kod sampel menetapkan kapasiti dan kadar baldi token, saiz tetingkap gelongsor dan ambang, dan menyemak sama ada permintaan terhad semasa.
Pelaksanaan pengehadan semasa Redis
Redis melaksanakan pengehadan semasa dengan menggunakan Algoritma Baldi Token dan Algoritma Tetingkap Gelongsor.
Algoritma Token Bucket
Algoritma Token Bucket merawat permintaan yang mengalir ke dalam sistem sebagai aliran air, dan Token Bucket ialah bekas yang boleh memuatkan bilangan token yang tetap. Sistem menambah token pada baldi token pada kadar tetap Apabila permintaan tiba, sistem mengambil token daripada baldi token Jika tidak ada token yang mencukupi, permintaan akan ditolak.
Algoritma Tetingkap Gelongsor
Algoritma tetingkap gelongsor membahagikan masa kepada selang saiz tetap (tetingkap) dan merekodkan bilangan permintaan dalam setiap tetingkap. Apabila permintaan baharu tiba, sistem menyemak sama ada bilangan permintaan dalam tetingkap semasa melebihi ambang Jika ya, permintaan akan ditolak.
Pelaksanaan dalam Redis
Redis menggunakan gabungan algoritma baldi token dan algoritma tetingkap gelongsor untuk mencapai pengehadan semasa.
Token Baldi
Token baldi dalam Redis menggunakan perintah incr
/decr
untuk beroperasi. Perintah incr
menambah token pada baldi token dan perintah decr
mengalih keluar token daripada baldi token. incr
/decr
命令来操作。incr
命令会向令牌桶中添加令牌,而 decr
命令会从令牌桶中取走令牌。
滑动窗口
Redis 使用 time
命令来获取当前时间,并使用 incrby
命令来记录每个窗口内的请求数量。
限流配置
Redis 使用 set
和 config set
命令来配置限流参数。
set
命令用于设置令牌桶的容量和生成速率。config set
Redis menggunakan perintah time
untuk mendapatkan masa semasa dan perintah incrby
untuk merekodkan bilangan permintaan dalam setiap tetingkap.
set
dan config set
untuk mengkonfigurasi parameter pengehad semasa. 🎜set
digunakan untuk menetapkan kapasiti dan kadar penjanaan baldi token. 🎜 Perintah config set
digunakan untuk menetapkan saiz dan ambang tetingkap gelongsor. 🎜🎜🎜🎜Contoh penggunaan🎜🎜<code># 设置令牌桶,容量为100,生成速率为每秒10个令牌 SET my_token_bucket 100 CONFIG SET my_token_bucket_refill_rate 10 # 设置滑动窗口,大小为10秒,阈值为每秒100个请求 CONFIG SET my_sliding_window_size 10 CONFIG SET my_sliding_window_threshold 100 # 检查请求是否被限流 IF INCR my_sliding_window_counter > my_sliding_window_threshold THEN # 请求被限流,拒绝 DECR my_sliding_window_counter RETURN -1 END IF # 请求未被限流,记录请求并执行操作 INCR my_sliding_window_counter # ... 执行操作 ...</code>
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengehadan semasa dalam redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!