Rumah  >  Artikel  >  pangkalan data  >  Aplikasi Redis dalam Python

Aplikasi Redis dalam Python

PHPz
PHPzasal
2023-06-20 16:32:251260semak imbas

Redis ialah sistem storan nilai kunci berprestasi tinggi sumber terbuka, biasa digunakan dalam cache, baris gilir mesej, kaunter dan senario lain. Sebagai bahasa skrip yang ringkas dan cekap, Python juga digunakan secara meluas dalam pemprosesan latar belakang Web, analisis data dan perlombongan, pembelajaran mesin, kecerdasan buatan dan bidang lain. Artikel ini akan membincangkan aplikasi Redis dalam Python, termasuk pemasangan Redis, penggunaan modul klien Python Redis dan kes aplikasi tertentu.

1. Pemasangan Redis

  1. Muat turun fail pemasangan
    Tapak web rasmi Redis menyediakan kod sumber dan versi prapenyusun. Jika anda memilih versi prapengumpulan, anda boleh memuat turun terus versi terkini.
  2. Nyahzip dan susun
    Selepas muat turun selesai, nyahzipnya ke direktori yang ditentukan. Gunakan arahan make untuk menyusun Redis ke dalam fail boleh laku, skrip permulaan, dsb. Dalam sistem Linux, anda boleh menggunakan arahan berikut:

$ tar xzf redis-5.0.3.tar.gz
$ cd redis-5.0.3
$ make

  1. Mulakan pelayan Redis
    Selepas penyusunan selesai, anda boleh menggunakan arahan pelayan redis untuk memulakan pelayan Redis Port mendengar lalai ialah 6379:

$ src. /redis-server

  1. Uji sambungan
    Anda boleh menggunakan arahan redis-cli untuk menyambung ke pelayan redis untuk operasi. Contohnya, gunakan arahan SET untuk menetapkan pasangan nilai kunci:

$ src/redis-cli
127.0.0.1:6379> SET mykey "Hello Redis"
OK
127.0. 0.1:6379> GET mykey
"Hello Redis"

2 Penggunaan modul klien Python Redis

Untuk menggunakan Redis dengan mudah, anda boleh menggunakan modul redis-py sebagai perpustakaan klien Redis. Anda boleh menggunakan arahan pip untuk memasang:

$ pip install redis

  1. Sambung ke pelayan Redis
    Mula-mula anda perlu mencipta objek Redis untuk menyambung ke pelayan Redis . Anda boleh menggunakan kod berikut:

import redis
rds = redis.Redis(host='localhost', port=6379, db=0)

di mana hos dan port masing-masing ialah alamat dan nombor port pelayan Redis, db mewakili nombor pangkalan data Redis, dan lalai ialah 0.

  1. Operasi Data
    Menggunakan objek Redis, anda boleh menetapkan, mendapatkan, memadam pasangan nilai kunci dan operasi lain. Contohnya:

rds.set('name', 'Alice')
name = rds.get('name')
print(name) # Output: b'Alice '

Antaranya, kaedah set digunakan untuk menetapkan pasangan nilai kunci, dan kaedah get digunakan untuk mendapatkan pasangan nilai kunci. Perlu diingatkan bahawa jenis data yang dikembalikan oleh kaedah get adalah bait dan perlu ditukar kepada rentetan menggunakan kaedah nyahkod.

  1. Operasi Kelompok
    Untuk meningkatkan kecekapan, Redis menyokong operasi kelompok. Menggunakan saluran paip, berbilang operasi boleh dibungkus dan dihantar ke pelayan Redis, mengurangkan overhed dan kependaman rangkaian. Contohnya:

paip = rds.pipeline()
pipe.set('key1', 'value1')
pipe.set('key2', 'value2')
pipe.set('key3', 'value3')
pipe.execute()

  1. mod Pub/Sub
    Redis menyediakan mod terbitkan/langgan untuk maklumat penghantaran. Pustaka klien Python Redis juga menyediakan API yang sepadan. Contohnya:

masa import
pubsub = rds.pubsub()
pubsub.subscribe('channel')
rds.publish('channel', 'Hello')
time.sleep(1) # Tunggu 1 saat
msg = pubsub.get_message()
print(msg) # Output: {'type': 'message', 'channel': b'channel ' , 'data': b'Hello'}

Antaranya, kaedah langgan bermaksud melanggan saluran, dan kaedah terbitan bermaksud menerbitkan mesej. Gunakan kaedah get_message untuk mendapatkan mesej.

3. Kes aplikasi khusus

  1. Caching
    Pustaka klien Python Redis boleh digunakan untuk menyimpan data yang biasa digunakan dan mempercepatkan kelajuan tindak balas aplikasi web. Contohnya:

masa import
import redis
Cache kelas:

def __init__(self):
    self.rds = redis.Redis(host='localhost', port=6379, db=0)

def get(self, key):
    val = self.rds.get(key)
    if val:
        return val.decode()
    return None

def set(self, key, val, ttl=60):
    self.rds.set(key, val, ex=ttl)

cache = Cache()
val = cache.get('key')
jika bukan val:

# 从数据库中查询数据
val = 'value'
cache.set('key', val, ttl=60)

print(val)

Kelas Cache merangkum pelaksanaan cache Redis, dan anda boleh menggunakan kaedah get dan set untuk mendapatkan atau menetapkan data cache. Tanya cache sebelum mendapatkan data Jika ia tidak wujud dalam cache, baca data daripada pangkalan data dan cache ia.

  1. Kunci teragih
    Kunci teragih ialah mekanisme penyegerakan yang digunakan untuk mengelakkan persaingan sumber apabila berbilang proses/benang/nod bekerjasama. Pustaka klien Python Redis boleh digunakan untuk melaksanakan kunci teragih. Contohnya:

masa import
import redis
Kunci kelas:

def __init__(self):
    self.rds = redis.Redis(host='localhost', port=6379, db=0)
    self.locked = False

def acquire(self, lockname, ttl=60):
    identifier = str(time.time())
    self.locked = self.rds.setnx(lockname, identifier)
    if self.locked:
        self.rds.expire(lockname, ttl)
    return self.locked

def release(self, lockname):
    if self.locked:
        self.rds.delete(lockname)

kunci = Kunci()
jika lock.acquire('mylock'):

# 处理业务逻辑...
lock.release('mylock')

Kelas Lock merangkumi pelaksanaan kunci teragih, dan kaedah perolehan dan lepaskan boleh digunakan untuk memperoleh atau melepaskan kunci. Apabila memperoleh kunci, kembalikan Palsu jika kunci sudah diisi; jika kunci tidak diisi, dapatkan kunci dan tetapkan masa tamat tempoh.

Ringkasnya, Redis digunakan secara meluas dalam Python dan boleh digunakan dalam cache, kunci teragih, baris gilir mesej, kaunter dan senario lain. Pustaka klien Python Redis juga menyediakan API yang ringkas dan mudah digunakan untuk operasi data yang mudah.

Atas ialah kandungan terperinci Aplikasi Redis dalam Python. 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