Rumah  >  Artikel  >  pangkalan data  >  Redis: Senjata rahsia untuk membina aplikasi web berprestasi tinggi

Redis: Senjata rahsia untuk membina aplikasi web berprestasi tinggi

PHPz
PHPzasal
2023-11-07 14:18:28515semak imbas

Redis: Senjata rahsia untuk membina aplikasi web berprestasi tinggi

Redis: Senjata rahsia untuk membina aplikasi web berprestasi tinggi

Dengan perkembangan Internet, prestasi aplikasi web telah menjadi bahagian penting dalam pengalaman pengguna. Antaranya, prestasi pangkalan data sering menjadi pening bagi pembangun aplikasi web. Pangkalan data tradisional terdedah kepada kesesakan apabila berhadapan dengan akses serentak yang tinggi, mengakibatkan kelajuan akses yang lebih perlahan dan sekali gus menjejaskan pengalaman pengguna. Untuk menyelesaikan masalah ini, terdapat penyelesaian caching berprestasi tinggi yang sedang digunakan oleh semakin ramai pembangun, dan itu ialah Redis.

Redis (Pelayan Kamus Jauh) ialah sistem penyimpanan struktur data dalam memori sumber terbuka yang juga digunakan sebagai pangkalan data. Ia menyokong pelbagai struktur data yang berbeza, seperti String, Hash, Senarai, Set, Set Diisih, dll. Ciri terbesar Redis ialah data disimpan dalam ingatan, yang boleh mengelakkan pembacaan dan penulisan cakera yang kerap dalam pangkalan data tradisional, sekali gus meningkatkan kelajuan membaca dan menulis data.

Jadi, bagaimanakah Redis membantu pembangun membina aplikasi web berprestasi tinggi? Di bawah ini kami akan memperkenalkan beberapa senjata rahsia Redis dalam pembangunan web dan memberikan contoh kod khusus.

  1. Data Cache

Redis boleh digunakan sebagai pelayan cache bebas untuk menyimpan data yang sering ditanya dalam ingatan untuk mempercepatkan pembacaan. Dengan menggunakan set Redis dan dapatkan arahan, storan data dan kelajuan membaca boleh ditingkatkan berpuluh kali ganda.

Kod sampel:

import redis

# 连接Redis服务器
r = redis.Redis(host='localhost', port=6379, db=0)

# 从数据库中查询数据
data = db.query('SELECT * FROM table')

# 将查询结果存储到Redis中
r.set('data', data)

# 从Redis中读取数据
data = r.get('data')

# 如果Redis中不存在数据,则从数据库中读取并存储到Redis中
if not data:
    data = db.query('SELECT * FROM table')
    r.set('data', data)
  1. Kunci teragih

Dalam aplikasi web berkonkurensi tinggi, untuk mengekalkan ketekalan data, operasi tertentu mungkin perlu dikunci. Redis menyediakan kaedah pelaksanaan kunci teragih Dengan menggunakan perintah setnx dan tamat tempoh, anda boleh mengelakkan berbilang benang melakukan operasi sensitif pada masa yang sama.

Kod contoh:

import redis
import time

# 连接Redis服务器
r = redis.Redis(host='localhost', port=6379, db=0)

# 加锁
def acquire_lock(lock_name, expire_time):
    while True:
        # 尝试设置锁,若设置成功则返回True
        if r.setnx(lock_name, time.time() + expire_time):
            return True
        # 当前锁已存在,判断是否已过期
        elif time.time() > float(r.get(lock_name)):
            # 获取并更新锁的过期时间
            old_value = r.getset(lock_name, time.time() + expire_time)
            if old_value and time.time() > float(old_value):
                return True
        time.sleep(0.1)

# 释放锁
def release_lock(lock_name):
    r.delete(lock_name)

# 使用分布式锁保护敏感操作
if acquire_lock('my_lock', 10):
    try:
        # 执行敏感操作
        pass
    finally:
        release_lock('my_lock')
  1. Mod terbitkan dan langgan

Redis menyediakan mod terbitkan dan langgan, yang boleh menerbitkan dan melanggan mesej antara pelanggan yang berbeza. Ciri ini boleh digunakan untuk melaksanakan komunikasi masa nyata atau sistem penyiaran.

Kod contoh:

import redis
import time

# 连接Redis服务器
r = redis.Redis(host='localhost', port=6379, db=0)

# 发布消息
def publish(channel, message):
    r.publish(channel, message)

# 订阅消息
def subscribe(channel, callback):
    pubsub = r.pubsub()
    pubsub.subscribe(channel)
    for item in pubsub.listen():
        if item['type'] == 'message':
            callback(item['data'])

# 定义回调函数
def callback(message):
    print('Received message:', message)

# 发布和订阅消息
publish('channel', 'Hello Redis!')
subscribe('channel', callback)

Ringkasan

Redis, sebagai penyelesaian caching berprestasi tinggi, boleh membantu pembangun membina aplikasi web berprestasi tinggi. Melalui fungsi seperti caching data, kunci yang diedarkan, dan menerbitkan serta melanggan model, prestasi dan kestabilan aplikasi web boleh dipertingkatkan dengan berkesan. Saya harap contoh kod di atas dapat membantu pembaca memahami dan menggunakan Redis dengan lebih baik.

Bahan rujukan:

  1. Dokumentasi rasmi Redis: https://redis.io/documentation
  2. Tapak web Cina Redis: https://www.redis.cn/

Atas ialah kandungan terperinci Redis: Senjata rahsia untuk membina aplikasi web berprestasi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn