Lewati ke isi

Pengembangan Skrip / Objek Konektor DFF.CONN / Redis

Objek operasi Konektor Redis terutama menyediakan metode operasi Redis.

Parameter DFF.CONN(...) adalah sebagai berikut:

Parameter Tipe Wajib / Nilai default Deskripsi
connector_id str Wajib ID Konektor
database str None Menimpa nomor database pada konfigurasi Konektor
client_name str None Mengatur nama klien untuk koneksi ini

Redis Cluster tidak mendukung pemilihan database logis, oleh karena itu koneksi cluster akan mengabaikan database.

Langganan Pesan

Untuk informasi tentang langganan pesan di Konektor, lihat Pengembangan Skrip / Langganan Konektor

.query(...)

Panggil langsung execute_command(...) dari Redis untuk mengeksekusi perintah, parameter sebagai berikut:

Parameter Tipe Wajib / Nilai default Deskripsi
command str Wajib Perintah Redis
*args - - Parameter perintah Redis
**kwargs - - Parameter yang diteruskan ke redis-py
Contoh
1
2
3
db.query('SET', 'myKey', 'myValue', 'nx')
result = db.query('GET', 'myKey')
# b'myValue'

.query(...) tidak mengonversi nilai pengembalian redis-py, hasil string biasanya berupa bytes. Dalam praktiknya, Anda dapat mengonversinya sesuai format data:

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import json

result = db.query('GET', 'intValue')
print(int(result))

result = db.query('GET', 'strValue')
print(result.decode('utf-8'))

result = db.query('GET', 'jsonValue')
print(json.loads(result.decode('utf-8')))

.run(...)

Panggil metode klien sesuai nama metode redis-py, dengan tanda tangan .run(command, *args, **kwargs). Contoh:

Contoh
1
result = db.run('set', 'myKey', 'myValue', nx=True)

command adalah nama metode redis-py yang peka huruf besar/kecil, biasanya ditulis dalam huruf kecil. Nilai pengembaliannya sama dengan metode redis-py yang sesuai.

Metode Praktis Umum

Konektor menyediakan metode praktis berikut. Metode pembacaan akan mendekode bytes menjadi string UTF-8 secara rekursif dalam implementasinya, sehingga mungkin berbeda dengan nilai pengembalian asli .query(...).

Database dan Kunci

Metode Deskripsi
.ping() Memeriksa koneksi
.info() Mendapatkan informasi Redis
.dbsize() Mendapatkan jumlah kunci database saat ini
.type(key) Mendapatkan tipe kunci; mengembalikan None jika kunci tidak ada
.memory_usage(key, samples=0) Mendapatkan memori yang digunakan kunci
.keys(pattern='*', limit=None) Menggunakan SCAN untuk mendapatkan kunci yang cocok, dapat membatasi jumlah hasil
.exists(key) Memeriksa apakah kunci ada, mengembalikan bool
.expire(key, expires) Mengatur waktu kedaluwarsa dalam detik
.expireat(key, timestamp) Mengatur waktu kedaluwarsa absolut
.ttl(key) / .pttl(key) Mendapatkan sisa waktu dalam hitungan detik / milidetik
.rename(key, new_key) Mengganti nama kunci
.renamenx(key, new_key) Hanya mengganti nama jika kunci baru tidak ada
.delete(keys) Menghapus satu kunci atau daftar kunci, mengembalikan jumlah yang dihapus

String dan Hash

Metode Deskripsi
.set(key, value, expires=None, not_exists=False, exists=False, get_old_value=False) Mengatur nilai, dan dapat mengatur waktu kedaluwarsa serta opsi NX, XX, GET
.mset(key_values) Mengatur banyak pasangan kunci-nilai dari kamus
.get(key) Mendapatkan dan mendekode satu nilai
.mget(keys) Mendapatkan banyak nilai, mengembalikan {key: value}
.getset(key, value) Mengatur nilai baru dan mengembalikan nilai lama
.incr(key) / .incrby(key, step=1) / .incrbyfloat(key, step=1) Menaikkan nilai numerik
.hkeys(key, pattern='*', with_values=False) Menggunakan HSCAN untuk mendapatkan field; dapat sekaligus mengembalikan nilai
.hset(key, field=None, value=None, field_values=None) Mengatur satu field atau pemetaan field
.hmset(key, field_values) Mengatur banyak field
.hsetnx(key, field, value) Hanya mengatur jika field tidak ada
.hget(key, field) / .hgetall(key) Mendapatkan dan mendekode nilai field
.hmget(key, fields) Mendapatkan banyak field, mengembalikan {field: value}
.hstrlen(key, field) / .hstrlenall(key) Mendapatkan panjang byte dari satu atau semua nilai field
.hincr(key, field) / .hincrby(key, field, step=1) / .hincrbyfloat(key, field, step=1) Menaikkan nilai numerik field
.hdel(key, field) Menghapus satu field atau daftar field

List, Set, dan Sorted Set

Metode Deskripsi
.lpush(key, value) / .rpush(key, value) Mendorong satu nilai atau daftar nilai dari kiri / kanan
.lpop(key, count=None) / .rpop(key, count=None) Mengeluarkan satu atau lebih nilai dari kiri / kanan
.blpop(key, timeout=0) / .brpop(key, timeout=0) Pop memblokir
.rpoplpush(key, dest_key=None) Mengeluarkan lalu mendorong ke list lain
.brpoplpush(key, dest_key=None, timeout=0) Pop dan push dengan pemblokiran
.llen(key) / .lrange(key, start=0, stop=-1) Mendapatkan panjang / rentang list
.ltrim(key, start, stop) Memotong list
.push(...) / .pop(...) / .bpop(...) Alias dari .lpush(...) / .rpop(...) / .brpop(...)
.sadd(key, member) / .srem(key, member) Menambahkan / menghapus satu anggota atau daftar anggota
.scard(key) / .smembers(key) / .sismember(key, member) Mendapatkan jumlah set, anggota, atau memeriksa keanggotaan
.zadd(key, member_scores) / .zrem(key, member) Menambahkan / menghapus anggota sorted set
.zcard(key) Mendapatkan jumlah anggota sorted set
.zrange(key, start=0, stop=-1, with_scores=False) Mendapatkan anggota berdasarkan posisi
.zrangebyscore(key, min_score='-inf', max_score='+inf', with_scores=False) Mendapatkan anggota berdasarkan skor

.publish(...)

Menerbitkan pesan ke kanal Redis, mengembalikan jumlah pelanggan yang menerima pesan. .pub(...) adalah aliasnya.

Contoh
1
subscriber_count = db.publish('events', 'hello')

Metode Ekstensi

Metode Deskripsi
.eval(lua_script, key_count, *args) Menjalankan Skrip Lua dan mendekode nilai kembalian
.push_limit(key, value, limit) Mendorong dari kiri lalu membatasi list ke panjang yang ditentukan
.get_pattern(pattern) Mendapatkan pasangan kunci-nilai yang cocok, mengembalikan {key: value}
.delete_pattern(pattern) Menghapus semua kunci yang cocok
.hget_pattern(key, pattern) Mendapatkan field dan nilai hash yang cocok
.lock(lock_key, lock_value, max_lock_time) Mendapatkan lock menggunakan SET EX NX
.extend_lock_time(lock_key, lock_value, max_lock_time) Memverifikasi pemegang lock lalu memperpanjang waktu kedaluwarsa
.unlock(lock_key, lock_value) Hanya melepaskan lock jika nilai lock cocok