Tüm Ürünler
Search
Belge Merkezi

Tair (Redis® OSS-Compatible):exString

Son Güncelleme:Oct 03, 2026

TairString, yerel Redis dizelerine sürüm numarası desteği ekleyerek iyimser kilitleme ve sınırlı artırma işlemlerini etkinleştirir.

Genel bakış

Yerel Redis dizeleri bir anahtar-değer çifti saklar. TairString her anahtara bir sürüm numarası ekler; bu sayede harici koordinasyona gerek kalmadan çakışma tespiti için hafif bir mekanizma sunar. Başarılı olan her yazma işlemi sürümü 1 artırır; yanlış sürüm belirten bir yazma isteği ise reddedilir.

TairString ayrıca EXINCRBY ve EXINCRBYFLOAT komutlarında minimum veya maksimum sınır belirlemenize olanak tanır. Bir artırma işlemi değeri bu aralığın dışına taşıracaksa komut, aralık dışı değeri yazmak yerine hata döndürür.

Temel yetenekler

  • Her TairString anahtarı, değerin yanında bir sürüm numarası taşır.

  • EXSET ve EXINCRBY, anahtarı en son okuduğunuzdan beri sürüm değiştiyse yazmayı reddeden bir VER seçeneğini kabul eder; bu sayede ayrı bir işlem olmadan karşılaştır-ve-ayarla (compare-and-set) uygulanır.

  • EXINCRBY ve EXINCRBYFLOAT, sayacı tanımlı bir aralıkta sınırlayan MIN ve MAX seçeneklerini destekler.

Bu modül açık kaynaklıdır. Daha fazla bilgi için bkz. GitHub.

Sürüm numaraları nasıl çalışır?

Aşağıdaki oturum, tipik bir yaşam döngüsü boyunca sürüm numarasının nasıl değiştiğini gösterir: oluşturma, sürüm eşleşen başarılı güncelleme, eski sürümlü reddedilen yazma, EXCAS ile karşılaştır-ve-ayarla ve EXCAD ile sürüm eşleşmeli silme.

127.0.0.1:6379> EXSET foo 100
OK
127.0.0.1:6379> EXGET foo
1) "100"
2) (integer) 1
127.0.0.1:6379> EXSET foo 200 VER 1
OK
127.0.0.1:6379> EXGET foo
1) "200"
2) (integer) 2
127.0.0.1:6379> EXSET foo 300 VER 1
(error) ERR update version is stale
127.0.0.1:6379> EXCAS foo 400 2
1) OK
2)
3) (integer) 3
127.0.0.1:6379> EXCAD foo 3
(integer) 1

Önkoşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

En son küçük sürüm daha fazla özellik ve daha yüksek kararlılık sağlar. Örneği en son küçük sürüme güncelleyin. Daha fazla bilgi için bkz. Bir örneğin küçük sürümünü güncelleme . Küme veya okuma/yazma ayrıştırma örnekleri için, tüm komutların beklendiği gibi çalışmasını sağlamak üzere proxy düğümlerini de en son küçük sürüme güncelleyin.

Kullanım notları

TairString verileri bir Tair örneğinde depolanır. Yerel Redis dizeleri ve TairString'ler aynı Tair örneğinde birlikte bulunabilir; ancak yerel Redis dizeleri bu konuda açıklanan komutları desteklemez.

Komut özeti

Komut Sözdizimi Açıklama
EXSET EXSET key value [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [KEEPTTL] Anahtar yoksa bir TairString anahtarı oluşturur ve değer yazar; anahtar varsa değerin üzerine yazar.
EXGET EXGET key Bir TairString anahtarının değerini ve sürüm numarasını döndürür.
EXSETVER EXSETVER key version Bir TairString anahtarının sürüm numarasını ayarlar.
EXINCRBY EXINCRBY key num [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [MIN minval] [MAX maxval] [KEEPTTL] Değeri bir tamsayı kadar artırır veya azaltır.
EXINCRBYFLOAT EXINCRBYFLOAT key num [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [MIN minval] [MAX maxval] [KEEPTTL] Değeri bir kayan noktalı sayı kadar artırır veya azaltır.
EXCAS EXCAS key newvalue version Sürüm eşleşiyorsa değeri günceller; eşleşmiyorsa geçerli değeri ve sürümü döndürür.
EXCAD EXCAD key version Sürüm eşleşiyorsa anahtarı siler.
DEL DEL key [key ...] Bir veya daha fazla TairString anahtarını siler.

Sözdizimi kuralları

  • BÜYÜK_HARF: komut anahtar sözcüğü.

  • eğik: değişken.

  • [seçenekler]: isteğe bağlı parametre. Köşeli parantez içermeyen parametreler zorunludur.

  • A|B: karşılıklı olarak özel seçenekler; yalnızca birini belirtin.

  • ...: önceki parametre tekrarlanabilir.

EXSET

Time complexity
Öğe Açıklama
Sözdizimi EXSET key value [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [KEEPTTL]
O(1)
Açıklama Anahtar yoksa bir TairString anahtarı oluşturur ve değer yazar. Anahtar zaten varsa değerin üzerine yazar.

Parametreler

  • key: yazılacak anahtar.

  • value: yazılacak değer.

  • EX time: saniye cinsinden göreli son kullanma süresi. 0 anahtarın hemen sona ereceği anlamına gelir. Atlanırsa anahtar sona ermez.

  • EXAT time: saniye cinsinden mutlak son kullanma zamanı (Unix zaman damgası). 0 anahtarın hemen sona ereceği anlamına gelir. Atlanırsa anahtar sona ermez.

  • PX time: milisaniye cinsinden göreli son kullanma süresi. 0 anahtarın hemen sona ereceği anlamına gelir. Atlanırsa anahtar sona ermez.

  • PXAT time: milisaniye cinsinden mutlak son kullanma zamanı (Unix zaman damgası). 0 anahtarın hemen sona ereceği anlamına gelir. Atlanırsa anahtar sona ermez.

  • NX: yalnızca anahtar yoksa yaz.

  • XX: yalnızca anahtar zaten varsa yaz.

  • VER version: sürüm numarasına göre karşılaştır-ve-ayarla.

    • Anahtar varsa: belirtilen sürüm geçerli sürümle eşleştiğinde yazma başarılı olur; ardından sürüm 1 artırılır. Sürümler eşleşmezse hata döndürülür.

    • Anahtar yoksa veya geçerli sürümü 0 ise: VER değeri yoksayılır, yazma başarılı olur ve sürüm 1 olarak ayarlanır.

  • ABS version: sürümü koşulsuz olarak üzerine yazar. Yazmadan sonra sürüm, belirtilen ABS değerine eşit olur.

  • KEEPTTL: anahtarın kalan TTL (time-to-live) değerini devralır. EX, PX, EXAT veya PXAT ile birlikte kullanılamaz.

Son kullanma parametresi ayarlanmamışsa ( EX , PX , EXAT , PXAT veya KEEPTTL ), anahtar sona ermez.

Dönüş değerleri

  • OK: yazma başarılı oldu.

  • nil: XX belirtildi ancak anahtar yok veya NX belirtildi ancak anahtar zaten var.

  • Hata: diğer tüm başarısızlıklar.

Örnek

EXSET foo bar EX 10 NX ABS 100
OK

EXGET

Öğe Açıklama
Sözdizimi EXGET key
Zaman karmaşıklığı O(1)
Açıklama Bir TairString anahtarının değerini ve sürüm numarasını döndürür.

Parametreler

  • key: okunacak anahtar.

Dönüş değerleri

  • Değeri (bulk string) ve sürüm numarasını (integer) içeren bir dizi.

  • Hata: anahtar yok veya başka bir başarısızlık oluştu.

Örnek

EXGET foo
1) "bar"
2) (integer) 1

EXSETVER

Öğe Açıklama
Sözdizimi EXSETVER key version
Zaman karmaşıklığı O(1)
Açıklama Bir TairString anahtarının sürüm numarasını ayarlar.

Parametreler

  • key: güncellenecek anahtar.

  • version: atanacak sürüm numarası.

Dönüş değerleri

  • 1: sürüm başarıyla ayarlandı.

  • 0: anahtar yok.

  • Hata: başka bir başarısızlık oluştu.

Örnek

EXSETVER foo 2
(integer) 1

EXINCRBY

Öğe Açıklama
Sözdizimi EXINCRBY key num [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [MIN minval] [MAX maxval] [KEEPTTL]
Zaman karmaşıklığı O(1)
Açıklama Bir TairString anahtarının değerini bir tamsayı (LONG türü) kadar artırır veya azaltır.

Parametreler

  • key: güncellenecek anahtar.

  • num: eklenecek tamsayı miktarı (azaltmak için negatif değer kullanın).

  • EX, EXAT, PX, PXAT, NX, XX, VER, ABS, KEEPTTL: EXSET ile aynı.

  • MIN minval: izin verilen minimum değer. Sonuç minval değerinden düşük olursa komut hata döndürür ve yazma yapmaz.

  • MAX maxval: izin verilen maksimum değer. Sonuç maxval değerini aşarsa komut hata döndürür ve yazma yapmaz.

Son kullanma parametresi ayarlanmamışsa ( EX , PX , EXAT , PXAT veya KEEPTTL ), anahtar sona ermez.

Dönüş değerleri

  • Güncellenen değer (integer): artırma başarılı oldu.

  • (error) ERR increment or decrement would overflow: sonuç MIN/MAX aralığının dışına çıkacak.

  • Hata: başka bir başarısızlık oluştu.

Örnek

Aşağıdaki örnek, önceden EXSET foo 1 çalıştırıldığını varsayar. Komut, foo değerini 100 artırır ve değeri maksimum 300 ile sınırlar.

EXINCRBY foo 100 MAX 300
(integer) 101

Desen: sınırlı sayaç

Sınırlarını asla aşmayan bir hız sınırlayıcı veya kota sayacı uygulamak için MIN ve MAX kullanın:

# Initialize the counter
EXSET requests 0

# Increment on each request; reject when the limit is hit
EXINCRBY requests 1 MAX 100
# Returns (error) ERR increment or decrement would overflow when the limit is reached

EXINCRBYFLOAT

Öğe Açıklama
Sözdizimi EXINCRBYFLOAT key num [EX|PX|EXAT|PXAT time] [NX|XX] [VER|ABS version] [MIN minval] [MAX maxval] [KEEPTTL]
Zaman karmaşıklığı O(1)
Açıklama Bir TairString anahtarının değerini bir kayan noktalı sayı (DOUBLE türü) kadar artırır veya azaltır.

Parametreler

  • key: güncellenecek anahtar.

  • num: eklenecek kayan noktalı miktar (azaltmak için negatif değer kullanın).

  • Diğer tüm seçenekler (EX, EXAT, PX, PXAT, NX, XX, VER, ABS, KEEPTTL, MIN, MAX): EXINCRBY ile aynı.

Son kullanma parametresi ayarlanmamışsa ( EX , PX , EXAT , PXAT veya KEEPTTL ), anahtar sona ermez.

Dönüş değerleri

  • Güncellenen değer: artırma başarılı oldu.

  • (error) ERR increment or decrement would overflow: sonuç MIN/MAX aralığının dışına çıkacak.

  • Hata: başka bir başarısızlık oluştu.

Örnek

Aşağıdaki örnek, önceden EXSET foo 1 çalıştırıldığını varsayar.

EXINCRBYFLOAT foo 10.123
(integer) 11.123

EXCAS

Öğe Açıklama
Sözdizimi EXCAS key newvalue version
Zaman karmaşıklığı O(1)
Açıklama Geçerli sürüm belirtilen sürümle eşleşiyorsa bir TairString anahtarının değerini günceller. Eşleşmiyorsa anahtarı değiştirmeden geçerli değeri ve sürüm numarasını döndürür.

Parametreler

  • key: güncellenecek anahtar.

  • newvalue: sürüm eşleşirse yazılacak değer.

  • version: geçerli sürümle karşılaştırılacak sürüm numarası.

Dönüş değerleri

  • ["OK", "", latest_version]: güncelleme başarılı oldu. Ortadaki boş dizenin bir anlamı yoktur.

  • ["ERR update version is stale", current_value, current_version]: sürüm eşleşmedi. Anahtar değiştirilmedi.

  • -1: anahtar yok.

  • Hata: başka bir başarısızlık oluştu.

Örnek

Aşağıdaki örnek, önceden EXSET foo bar çalıştırıldığını varsayar (sürüm = 1).

EXCAS foo bzz 1
1) OK
2)
3) (integer) 2

Desen: iyimser kilitleme

Kilit olmadan oku-değiştir-yaz döngüsü uygulamak için EXCAS kullanın:

# 1. Read the current value and version
EXGET mykey
# Returns: value="old", version=5

# 2. Modify locally

# 3. Write back only if the version hasn't changed
EXCAS mykey "new" 5
# If another writer changed the key, EXCAS returns the stale-version error.
# Retry from step 1.

EXCAD

Öğe Açıklama
Sözdizimi EXCAD key version
Zaman karmaşıklığı O(1)
Açıklama Geçerli sürüm belirtilen sürümle eşleşiyorsa bir TairString anahtarını siler.

Parametreler

  • key: silinecek anahtar.

  • version: geçerli sürümle karşılaştırılacak sürüm numarası.

Dönüş değerleri

  • 1: anahtar silindi.

  • 0: sürüm eşleşmedi; anahtar silinmedi.

  • -1: anahtar yok.

  • Hata: başka bir başarısızlık oluştu.

Örnek

Aşağıdaki örnek, önceden EXSET foo bar çalıştırıldığını varsayar (sürüm = 1).

EXCAD foo 1
(integer) 1

Sonraki adımlar