CAS (Compare And Set) ve CAD (Compare And Delete), Tair örneklerindeki yerel Redis dizeleri için atomik koşullu komutlardır. CAS, bir anahtarın değerini yalnızca beklenen değerle eşleştiğinde günceller; CAD ise bir anahtarı yalnızca değeri eşleştiğinde siler.
Önkoşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
1.2.3 veya sonraki bir küçük sürümde çalışan Tair DRAM tabanlı veya kalıcı bellek optimize edilmiş örnek
(Önerilir) Ek özellikler ve kararlılık için örneği en son küçük sürüme güncelleyin — bkz. Bir örneğin küçük sürümünü güncelleme
(Küme veya okuma/yazma ayırma örnekleri için) Tüm komutların beklendiği gibi çalışması için proxy düğümlerini en son küçük sürüme güncelleyin
Komutlara Genel Bakış
| Komut | Sözdizimi | Açıklama |
|---|---|---|
| CAS | CAS key oldvalue newvalue [EX|PX|EXAT|PXAT time] |
Anahtarın mevcut değerini oldvalue ile karşılaştırır. Eşleşirse değeri newvalue olarak günceller. |
| CAD | CAD key value |
Anahtarın mevcut değerini value ile karşılaştırır. Eşleşirse anahtarı siler. |
Sözdizimi Kuralları
| Gösterim | Anlamı |
|---|---|
UPPERCASE |
Komut anahtar sözcüğü |
italic |
Değişken — gerçek bir değerle değiştirin |
[options] |
İsteğe bağlı parametre; köşeli parantez olmayan parametreler gereklidir |
A|B |
Birbirini dışlayan — yalnızca birini belirtin |
... |
Parametre tekrarlanabilir |
CAS
Bir anahtarın mevcut değerini oldvalue ile atomik olarak karşılaştırır ve eşleşirse bunu newvalue ile değiştirir.
Sözdizimi: CAS key oldvalue newvalue [EX|PX|EXAT|PXAT time]
Zaman karmaşıklığı O(1)
Parametreler
| Parametre | Açıklama |
|---|---|
key |
Dize türündeki hedef anahtar |
oldvalue |
Anahtarın beklenen mevcut değeri |
newvalue |
oldvalue mevcut değerle eşleşirse ayarlanacak değer |
EX time |
Saniye cinsinden göreli sona erme süresi. 0 anahtarın hemen sona ermesine neden olur. Atlanırsa var olan TTL kaldırılır ve anahtar sona ermez. |
PX time |
Milisaniye cinsinden göreli sona erme süresi. 0 anahtarın hemen sona ermesine neden olur. Atlanırsa var olan TTL kaldırılır ve anahtar sona ermez. |
EXAT time |
Saniye cinsinden Unix zaman damgası olarak mutlak sona erme süresi. 0 anahtarın hemen sona ermesine neden olur. Atlanırsa var olan TTL kaldırılır ve anahtar sona ermez. |
PXAT time |
Milisaniye cinsinden Unix zaman damgası olarak mutlak sona erme süresi. 0 anahtarın hemen sona ermesine neden olur. Atlanırsa var olan TTL kaldırılır ve anahtar sona ermez. |
Anahtarın Yaşam Süresi (TTL) varsa ve CAS'yi bir sona erme parametresi olmadan çalıştırırsanız TTL kaldırılır ve anahtar sona ermez.
Dönüş Değeri
| Değer | Anlamı |
|---|---|
1 |
Değer eşleşti; anahtar güncellendi |
0 |
Değer eşleşmedi; anahtar değişmedi |
-1 |
Anahtar mevcut değil |
| Hata | Diğer başarısızlık |
Örnekler
Aşağıdaki oturum, tüm üç CAS sonucunu gösterir: eşleşmeme, eşleşme ve sona erme.
127.0.0.1:6379> SET foo bar
OK
127.0.0.1:6379> CAS foo baa bzz
(integer) 0
127.0.0.1:6379> GET foo
"bar"
127.0.0.1:6379> CAS foo bar bzz
(integer) 1
127.0.0.1:6379> GET foo
"bzz"
127.0.0.1:6379> CAS foo bzz too EX 10
(integer) 1
127.0.0.1:6379> GET foo
"too"
10 saniyelik TTL süresi dolduktan sonra anahtar artık mevcut değildir:
127.0.0.1:6379> GET foo
(nil)
CAD
Bir anahtarın mevcut değerini value ile atomik olarak karşılaştırır ve eşleşirse anahtarı siler.
Sözdizimi: CAD key value
Zaman karmaşıklığı O(1)
Parametreler
| Parametre | Açıklama |
|---|---|
key |
Dize türündeki hedef anahtar |
value |
Anahtarın beklenen mevcut değeri |
Dönüş Değeri
| Değer | Anlamı |
|---|---|
1 |
Değer eşleşti; anahtar silindi |
0 |
Değer eşleşmedi; anahtar değişmedi |
-1 |
Anahtar mevcut değil |
| Hata | Diğer başarısızlık |
Örnekler
Aşağıdaki oturum, tüm üç CAD sonucunu gösterir: eşleşmeme, anahtar bulunamadı ve başarılı silme.
127.0.0.1:6379> SET foo bar
OK
127.0.0.1:6379> CAD foo bzz
(integer) 0
127.0.0.1:6379> CAD not-exists xxx
(integer) -1
127.0.0.1:6379> CAD foo bar
(integer) 1
127.0.0.1:6379> GET foo
(nil)