TairZset (exZset), Redis sıralı kümelerini çok boyutlu puanlama özelliğiyle genişletir. Üyeler, soldan sağa öncelikli olacak şekilde en fazla 256 çift hassasiyetli kayan noktalı puana göre sıralanır.
Genel Bakış
Redis sıralı kümeleri üye başına yalnızca tek bir puanı destekler; bu durum çok boyutlu sıralamayı zorlaştırır. Puanları IEEE 754 kodlamasıyla birleştirme veya dize birleştirme gibi yaygın geçici çözümler, hassasiyet kaybına, karmaşık kodlama/çözümleme mantığına ve bireysel puan boyutlarının atomik olarak artırılmasının mümkün olmamasına neden olur.
TairZset, yerel çok boyutlu bir veri yapısıyla bu sorunu çözer:
Üye başına en fazla 256 puan boyutu; biçim:
score1#score2#...#scoreNSoldan sağa öncelik: İki üye karşılaştırılırken ilk boyut önce değerlendirilir; eşitse ikinci boyuta geçilir ve bu şekilde devam eder.
Atomik artırımlar:
EXZINCRBYkomutu, okuma-değiştirme-yazma döngülerine gerek kalmadan belirli bir boyutu artırır.API uyumluluğu: Komutlar yerel sıralı küme komutlarını yansıtır; istemcinizde kodlama veya çözümleme mantığı gerektirmez.
Normal ve dağıtılmış liderlik tabloları: Hem tek düğümlü hem de dağıtılmış liderlik tablosu mimarilerini destekler.
Açık kaynaklı TairJedis istemcisi: TairJedis SDK adresinde mevcuttur; diğer diller için istemci uygulamalarına referans olarak açık kaynak kodunu kullanabilirsiniz.
Modülün açık kaynak koduna GitHub'daki TairZset sayfasından erişebilirsiniz.
Kullanım senaryoları
Çok boyutlu puanlama, tek bir metriğin yeterli olmadığı tüm liderlik tabloları için TairZset'i doğal bir seçim haline getirir:
Canlı yayın liderlik tabloları: Yayıncıları önce popülerliğe, sonra beğeni sayısına, ardından hediye tutarına göre sıralayın —
popularity#likes#gift_amountMadalya sıralamaları: Yarışmacıları önce altın, sonra gümüş, ardından bronz madalya sayısına göre sıralayın —
gold#silver#bronzeOyun liderlik tabloları: Oyuncuları önce puana, sonra görev tamamlama süresine, ardından oyuncu rütbesine göre sıralayın —
score#completion_time#player_rank
Çok boyutlu karşılaştırma nasıl çalışır?
TairZset, puanları soldan sağa doğru boyut boyut karşılaştırır. İki boyutlu bir puan olan score1#score2 değerini ele alalım:
0#99ile99#90ve99#99karşılaştırması:0 < 99olduğu için sonuç0#99 < 99#90 < 99#99şeklinde olur.#işaretini ondalık nokta gibi düşünün:0.99 < 99.90 < 99.99
Tüm boyutlar eşitse TairZset, üye adını ASCII sırasına göre sıralar.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Bir Tair bellek optimize edilmiş örnek
Redis 5.0 ile uyumlu bellek optimize edilmiş örnekler için: küçük sürüm 1.7.1 veya üzeri
En fazla özellik ve en yüksek kararlılık için en son küçük sürüme güncelleyin. Bkz. Bir örneğin küçük sürümünü güncelleme . Küme örnekleri veya okuma/yazma ayrıştırma örnekleri için, tüm komutların beklendiği gibi çalışmasını sağlamak amacıyla proxy düğümlerini de güncelleyin.
Kullanım notları
Tüm TairZset komutları, Tair örneklerindeki TairZset verileri üzerinde çalışır. Bu komutları farklı bir veri türü içeren bir anahtar üzerinde çalıştırmak hata döndürür.
Puan biçimi tutarlılığı: Aynı anahtardaki tüm üyeler aynı sayıda puan boyutu kullanmalıdır. Aynı anahtarda
1#2#3ve1#2karışımı hata oluşturur.Artırım biçimi:
EXZINCRBYiçindekiincrementdeğeri, hedef üyenin puan boyutu biçimiyle eşleşmelidir. Üç boyutlu bir puanın yalnızca bir boyutunu artırmak için üç boyutu da belirtin (ör.EXZINCRBY key 0#1#0 member).+infve-infdeğerleri, tüm puan aralığı komutlarında geçerli puan değerleridir.
Hızlı başlangıç
Aşağıdaki örnek, iki boyutlu bir canlı yayın liderlik tablosu oluşturur: Önce popülerliğe, sonra beğeni sayısına göre sıralama yapılır.
# Add streamers with initial scores (popularity#likes)
EXZADD leaderboard 1000#500 alice 800#900 bob 1000#300 carol
# Atomically increment alice's likes without a read-modify-write cycle
EXZINCRBY leaderboard 0#100 alice
# Get the full leaderboard, highest score first
EXZREVRANGE leaderboard 0 -1 WITHSCORES
# 1) "alice"
# 2) "1000#600"
# 3) "carol"
# 4) "1000#300"
# 5) "bob"
# 6) "800#900"
# Get alice's rank (highest = rank 0)
EXZREVRANK leaderboard alice
# (integer) 0
Komutlar
Aşağıdaki tabloda tüm TairZset komutları listelenmiştir. TairZset anahtarlarını silmek için yerel Redis DEL komutunu kullanın.
| Komut | Sözdizimi | Karmaşıklık | Açıklama |
|---|---|---|---|
| EXZADD | EXZADD key [NX|XX] [CH] [INCR] score member [score member ...] |
O(M\*log(N)) | Üyeleri puanlarla ekler veya günceller |
| EXZINCRBY | EXZINCRBY key increment member |
O(log(N)) | Bir üyenin puanını artırır |
| EXZSCORE | EXZSCORE key member |
O(1) | Bir üyenin puanını alır |
| EXZRANGE | EXZRANGE key min max [WITHSCORES] |
O(log(N)+M) | Dizin aralığına göre üyeleri düşükten yükseğe döndürür |
| EXZREVRANGE | EXZREVRANGE key min max [WITHSCORES] |
O(log(N)+M) | Dizin aralığına göre üyeleri yüksekten düşüğe döndürür |
| EXZRANGEBYSCORE | EXZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
O(log(N)+M) | Puan aralığına göre üyeleri düşükten yükseğe döndürür |
| EXZREVRANGEBYSCORE | EXZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] |
O(log(N)+M) | Puan aralığına göre üyeleri yüksekten düşüğe döndürür |
| EXZRANGEBYLEX | EXZRANGEBYLEX key min max [LIMIT offset count] |
O(log(N)+M) | Sözcüksel aralığa göre üyeleri döndürür |
| EXZREVRANGEBYLEX | EXZREVRANGEBYLEX key max min [LIMIT offset count] |
O(log(N)+M) | Sözcüksel aralığa göre üyeleri ters sırada döndürür |
| EXZREM | EXZREM key member [member ...] |
O(M\*log(N)) | Üyeleri kaldırır |
| EXZREMRANGEBYSCORE | EXZREMRANGEBYSCORE key min max |
O(log(N)+M) | Puan aralığına göre üyeleri kaldırır |
| EXZREMRANGEBYRANK | EXZREMRANGEBYRANK key start stop |
O(log(N)+M) | Sıra aralığına göre üyeleri kaldırır |
| EXZREMRANGEBYLEX | EXZREMRANGEBYLEX key min max |
O(log(N)+M) | Sözcüksel aralığa göre üyeleri kaldırır |
| EXZCARD | EXZCARD key |
O(1) | Üye sayısını döndürür |
| EXZRANK | EXZRANK key member |
O(log(N)) | Bir üyenin sırasını düşükten yükseğe döndürür |
| EXZREVRANK | EXZREVRANK key member |
O(log(N)) | Bir üyenin sırasını yüksekten düşüğe döndürür |
| EXZCOUNT | EXZCOUNT key min max |
O(log(N)) | Belirli bir puan aralığındaki üyeleri sayar |
| EXZLEXCOUNT | EXZLEXCOUNT key min max |
O(log(N)) | Belirli bir sözcüksel aralıktaki üyeleri sayar |
| EXZRANKBYSCORE | EXZRANKBYSCORE key score |
O(log(N)) | Bir puanın sırasını düşükten yükseğe döndürür |
| EXZREVRANKBYSCORE | EXZREVRANKBYSCORE key score |
O(log(N)) | Bir puanın sırasını yüksekten düşüğe döndürür |
| DEL | DEL key [key ...] |
— | Bir veya daha fazla TairZset anahtarını siler |
Bu konuda kullanılan sözdizimi kuralları:
BÜYÜK_HARF_ANAHTAR_SÖZCÜK: komut anahtar sözcüğü_italik_: değişken[seçenek]: isteğe bağlı parametreA|B: birbirini dışlayan seçenekler (birini seçin)...: önceki parametre tekrarlanabilir
EXZADD
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZADD key [NX|XX] [CH] [INCR] score member [score member ...] |
| Karmaşıklık | O(M\*log(N)); burada N anahtardaki üye sayısı, M ise eklenen veya güncellenen üye sayısıdır |
| Açıklama | Bir TairZset anahtarına puanlı üyeler ekler veya mevcut üyelerin puanlarını günceller. |
Davranış:
Anahtar yoksa oluşturulur.
Üye yoksa belirtilen puanla eklenir.
Üye zaten varsa puanı üzerine yazılır (
NXbelirtilmedikçe).Her puan, çift hassasiyetli kayan noktalı bir sayının dize gösterimidir.
+infve-infgeçerli değerlerdir.
Çok boyutlu puanlama kullanmak için her boyutu#işaretiyle ayırın; örneğin111#222#121. Anahtardaki tüm üyeler aynı sayıda boyut kullanmalıdır.
Seçenekler:
| Seçenek | Açıklama |
|---|---|
NX |
Yalnızca yeni üyeler ekler; mevcut üyeleri atlar |
XX |
Yalnızca mevcut üyeleri günceller; yeni üyeleri atlar |
CH |
Dönüş değerini, yalnızca yeni eklenen üyelerin sayısından, tüm değiştirilen üyelerin (eklenen veya puanı güncellenen) sayısına değiştirir |
INCR |
Puanı bir artış olarak değerlendirir; EXZADD komutunun EXZINCRBY gibi davranmasını sağlar. Bu modda yalnızca bir puan-üye çiftine izin verilir. |
Dönüş değeri:
Seçenek yoksa: Yeni eklenen üye sayısı (yalnızca puanı güncellenen üyeler sayılmaz)
CHile: Eklenen veya puanı değişen üye sayısıINCRile: Üyenin yeni puanı dize olarak (ör."2#0#6"); işlemNXveyaXXnedeniyle atlanırsanildöndürür
Örnek:
EXZADD testkey NX 1#0#3 a 1#0#2 b
(integer) 2
EXZINCRBY
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZINCRBY key increment member |
| Karmaşıklık | O(log(N)) |
| Açıklama | Bir TairZset anahtarındaki bir üyenin puanını artırır. |
Davranış:
Anahtar veya üye yoksa her ikisi de oluşturulur ve puan
incrementdeğerine ayarlanır.Üye varsa puanı
incrementmiktarınca artırılır.Her puan boyutu çift hassasiyetli kayan noktalı bir sayıdır.
+infve-infgeçerli değerlerdir.Bir puanı azaltmak için negatif bir
incrementdeğeri girin.
Çok boyutlu puanlar içinincrementdeğeri, üyenin puan biçimiyle aynı olmalıdır. Örneğin, üç boyutlu bir puanın yalnızca ikinci boyutunu artırmak için0#1#0kullanın.
Dönüş değeri: Üyenin yeni puanı dize olarak. Çok boyutlu puanlar için biçim "score1#score2#..." şeklindedir (ör. "2#0#6").
Örnek:
EXZINCRBY testkey 2#2#1 a
"3#2#4"
EXZSCORE
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZSCORE key member |
| Karmaşıklık | O(1) |
| Açıklama | Bir TairZset anahtarındaki bir üyenin puanını döndürür. Anahtar veya üye yoksa nil döndürür. |
Dönüş değeri: Üyenin puanı dize olarak. Çok boyutlu puanlar için biçim "score1#score2#..." şeklindedir (ör. "3#2#4").
Örnek:
EXZSCORE testkey a
"3#2#4"
EXZRANGE
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZRANGE key min max [WITHSCORES] |
| Karmaşıklık | O(log(N)+M); burada N üye sayısı, M ise döndürülen üye sayısıdır |
| Açıklama | Belirli bir dizin aralığındaki üyeleri, puana göre düşükten yükseğe sıralı olarak döndürür. |
Seçenekler:
| Seçenek | Açıklama |
|---|---|
min, max |
Sıfır tabanlı dizin değerleri. -1 son üyeyi, -2 sondan ikinci üyeyi temsil eder. Tüm üyeleri döndürmek için 0 ve -1 kullanın. min değeri son dizini aşarsa veya max değerinden büyükse boş liste döndürür. |
WITHSCORES |
Yanıta puanları dahil eder. Biçim üye ve puanı ardışık olarak içerir: member1, score1, member2, score2, ... |
Return value: Belirtilen aralıktaki üyelerin listesi; WITHSCORES belirtilirse puanlarla birlikte.
Örnek:
EXZRANGE testkey 0 -1 WITHSCORES
1) "b"
2) "1#0#2"
3) "a"
4) "3#2#4"
EXZREVRANGE
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZREVRANGE key min max [WITHSCORES] |
| Karmaşıklık | O(log(N)+M); burada N üye sayısı, M ise döndürülen üye sayısıdır |
| Açıklama | Belirli bir dizin aralığındaki üyeleri, puana göre yüksekten düşüğe sıralı olarak döndürür. Aynı puana sahip üyeler ters sözcüksel sıraya göre dizilir. Sıralama yönü dışında EXZRANGE ile aynıdır. |
Seçenekler:
| Seçenek | Açıklama |
|---|---|
min, max |
Sıfır tabanlı dizin değerleri. -1 en düşük puanlı üyeyi, -2 en düşükten sonraki üyeyi temsil eder. Tüm üyeleri döndürmek için 0 ve -1 kullanın. |
WITHSCORES |
Yanıta puanları dahil eder. |
Return value: Belirtilen aralıktaki üyelerin listesi; WITHSCORES belirtilirse puanlarla birlikte.
Örnek:
EXZREVRANGE testkey 0 -1 WITHSCORES
1) "a"
2) "3#2#4"
3) "b"
4) "1#0#2"
EXZRANGEBYSCORE
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
| Karmaşıklık | O(log(N)+M); burada N üye sayısı, M ise döndürülen üye sayısıdır. M sabit olduğunda (ör. ilk 10 üyeyi her zaman döndürmek için LIMIT kullanıldığında) karmaşıklık O(log(N)) olur. |
| Açıklama | min ile max arasında kalan puanlara sahip tüm üyeleri düşükten yükseğe sıralı olarak döndürür. Aynı puana sahip üyeler sözcüksel sıraya göre dizilir. |
Seçenekler:
| Seçenek | Açıklama |
|---|---|
min, max |
Minimum ve maksimum puanlar. Çok boyutlu puanlar için ayırıcı olarak # kullanın. Puan sınırları bilinmiyorsa -inf ve +inf kullanın. Varsayılan olarak aralık kapalı aralıktır (min <= score <= max). Açık aralık için değerin önüne ( koyun; örneğin (1 5 1'den büyük ve en fazla 5 olan puanlara sahip üyeleri döndürür. |
WITHSCORES |
Yanıta puanları dahil eder. |
LIMIT offset count |
Sonucu offset konumundan başlayarak count üyeyle sınırlar. count negatifse offset konumundan itibaren tüm üyeler döndürülür. Büyük bir offset değeri, TairZset'in bu konuma ulaşmak için anahtarı taraması gerektiğinden zaman karmaşıklığını artırır. |
Return value: Puan aralığındaki üyelerin listesi; WITHSCORES belirtilirse puanlarla birlikte.
Örnek:
EXZRANGEBYSCORE testkey 0#0#0 6#6#6 WITHSCORES
1) "b"
2) "1#0#2"
3) "a"
4) "3#2#4"
EXZREVRANGEBYSCORE
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] |
| Karmaşıklık | O(log(N)+M); burada N üye sayısı, M ise döndürülen üye sayısıdır. M sabit olduğunda (ör. ilk 10 üyeyi her zaman döndürmek için LIMIT kullanıldığında) karmaşıklık O(log(N)) olur. |
| Açıklama | min ile max arasında kalan puanlara sahip tüm üyeleri yüksekten düşüğe sıralı olarak döndürür. Aynı puana sahip üyeler ters sözcüksel sıraya göre dizilir. EXZRANGEBYSCORE ile benzerdir ancak ters sıradadır. Sözdiziminde max değerinin min değerinden önce geldiğine dikkat edin. |
Seçenekler:
| Seçenek | Açıklama |
|---|---|
max, min |
Maksimum ve minimum puanlar (argüman sırasının ters olduğuna dikkat edin). Çok boyutlu puanlar için ayırıcı olarak # kullanın. Puan sınırları bilinmiyorsa -inf ve +inf kullanın. Açık aralık için değerin önüne ( koyun. |
WITHSCORES |
Yanıta puanları dahil eder. |
LIMIT offset count |
Sonucu offset konumundan başlayarak count üyeyle sınırlar. Büyük bir offset değeri zaman karmaşıklığını artırır. |
Return value: Puan aralığındaki üyelerin listesi; WITHSCORES belirtilirse puanlarla birlikte.
Örnek:
EXZREVRANGEBYSCORE testkey 6#6#6 0#0#0 WITHSCORES
1) "a"
2) "3#2#4"
3) "b"
4) "1#0#2"
EXZRANGEBYLEX
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZRANGEBYLEX key min max [LIMIT offset count] |
| Karmaşıklık | O(log(N)+M); burada N üye sayısı, M ise döndürülen üye sayısıdır. M sabit olduğunda karmaşıklık O(log(N)) olur. |
| Açıklama | Adları min ile max arasında sözcüksel sıraya göre kalan üyeleri döndürür. Sonuçların öngörülebilir olması için anahtardaki tüm üyelerin aynı puana sahip olması gerekir. |
Üyelerin farklı puanları varsa döndürülen küme tanımsızdır. Sözcüksel karşılaştırma, C memcmp() işlevini kullanarak baytları tek tek karşılaştırır. İki dize ortak bir öneki paylaşıyorsa daha uzun dize daha yüksek sırada yer alır.
Seçenekler:
| Seçenek | Açıklama |
|---|---|
min, max |
Üye adı sınırları. Kapalı aralık için önüne [ (ör. [a), açık aralık için ( (ör. (a) koyun. Negatif sonsuzluk (en küçük dize) için -, pozitif sonsuzluk (en büyük dize) için + kullanın. |
LIMIT offset count |
Sonucu offset konumundan başlayarak count üyeyle sınırlar. Büyük bir offset değeri zaman karmaşıklığını artırır. |
Return value: Sözcüksel aralıktaki üyelerin listesi.
Örnek:
EXZRANGEBYLEX zzz [a [b
1) "aba"
2) "abc"
EXZREVRANGEBYLEX
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZREVRANGEBYLEX key max min [LIMIT offset count] |
| Karmaşıklık | O(log(N)+M); burada N üye sayısı, M ise döndürülen üye sayısıdır. M sabit olduğunda karmaşıklık O(log(N)) olur. |
| Açıklama | max ile min arasındaki sözcüksel aralıktaki üyeleri ters sırada döndürür. EXZRANGEBYLEX ile aynıdır ancak terstir. Sözdiziminde max değerinin min değerinden önce geldiğine dikkat edin. |
Seçenekler:
| Seçenek | Açıklama |
|---|---|
max, min |
Üye adı sınırları (argüman sırasının ters olduğuna dikkat edin). Kapalı aralık için önüne [, açık aralık için ( koyun. Negatif ve pozitif sonsuzluk için - ve + kullanın. |
LIMIT offset count |
Sonucu offset konumundan başlayarak count üyeyle sınırlar. Büyük bir offset değeri zaman karmaşıklığını artırır. |
Return value: Sözcüksel aralıktaki üyelerin listesi, ters sırada.
Örnek:
EXZREVRANGEBYLEX zzz [b [a
1) "abc"
2) "aba"
EXZREM
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZREM key member [member ...] |
| Karmaşıklık | O(M\*log(N)); burada N üye sayısı, M ise kaldırılacak üye sayısıdır |
| Açıklama | Belirtilen üyeleri bir TairZset anahtarından kaldırır. Var olmayan üyeler sessizce yoksayılır. Anahtar varsa ancak farklı bir veri türü tutuyorsa hata döndürür. |
Dönüş değeri: Kaldırılan üye sayısı (var olmayan üyeler sayılmaz).
Örnek:
EXZREM testkey a
(integer) 1
EXZREMRANGEBYSCORE
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZREMRANGEBYSCORE key min max |
| Karmaşıklık | O(log(N)+M); burada N üye sayısı, M ise kaldırılan üye sayısıdır |
| Açıklama | min ile max arasında kalan (dahil) puanlara sahip tüm üyeleri kaldırır. |
Seçenekler:
| Seçenek | Açıklama |
|---|---|
min, max |
Puan sınırları. Çok boyutlu puanlar için ayırıcı olarak # kullanın. Sınırlar bilinmiyorsa -inf ve +inf kullanın. Açık aralık için değerin önüne ( koyun; örneğin EXZREMRANGEBYSCORE key (1 5 1'den büyük ve en fazla 5 olan puanlara sahip üyeleri kaldırır. |
Dönüş değeri: Kaldırılan üye sayısı.
Örnek:
EXZREMRANGEBYSCORE testkey 3#2#4 6#6#6
(integer) 1
EXZREMRANGEBYRANK
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZREMRANGEBYRANK key start stop |
| Karmaşıklık | O(log(N)+M); burada N üye sayısı, M ise kaldırılan üye sayısıdır |
| Açıklama | start ile stop arasında kalan sıralara sahip tüm üyeleri kaldırır. |
Seçenekler:
| Seçenek | Açıklama |
|---|---|
start, stop |
Sıfır tabanlı sıra değerleri; 0 en düşük puanlı üyedir. Negatif değerler en yüksek puandan geriye doğru sayılır: -1 en yüksek puanlı üye, -2 en yüksekten sonraki üyedir. |
Dönüş değeri: Kaldırılan üye sayısı.
Örnek:
EXZREMRANGEBYRANK testkey 0 1
(integer) 1
EXZREMRANGEBYLEX
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZREMRANGEBYLEX key min max |
| Karmaşıklık | O(log(N)+M); burada N üye sayısı, M ise kaldırılan üye sayısıdır |
| Açıklama | Adları min ile max arasında sözcüksel sıraya göre kalan üyeleri kaldırır. Sonuçların öngörülebilir olması için tüm üyelerin aynı puana sahip olması gerekir. Aynı min ve max değerleriyle EXZRANGEBYLEX komutunun döndüreceği üyeleri kaldırır. |
Seçenekler:
| Seçenek | Açıklama |
|---|---|
min, max |
Üye adı sınırları. Kapalı aralık için önüne [, açık aralık için ( koyun. |
Dönüş değeri: Kaldırılan üye sayısı.
Örnek:
EXZREMRANGEBYLEX testkey [a [b
(integer) 2
EXZCARD
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZCARD key |
| Karmaşıklık | O(1) |
| Açıklama | Bir TairZset anahtarındaki üye sayısını döndürür. Anahtar yoksa 0 döndürür. |
Dönüş değeri: Üye sayısı (tamsayı).
Örnek:
EXZCARD testkey
(integer) 2
EXZRANK
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZRANK key member |
| Karmaşıklık | O(log(N)) |
| Açıklama | Bir üyenin sırasını döndürür; en düşük puanlı üyeye 0 sırası atanır (artan sıra). |
Dönüş değeri:
Üye varsa üyenin sırası (tamsayı)
Anahtar veya üye yoksa
nil
Örnek:
EXZRANK testkey b
(integer) 0
EXZREVRANK
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZREVRANK key member |
| Karmaşıklık | O(log(N)) |
| Açıklama | Bir üyenin sırasını döndürür; en yüksek puanlı üyeye 0 sırası atanır (azalan sıra). EXZRANK ile aynıdır ancak ters sıradadır. |
Dönüş değeri:
Üye varsa üyenin sırası (tamsayı)
Anahtar veya üye yoksa
nil
Örnek:
EXZREVRANK testkey b
(integer) 1
EXZCOUNT
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZCOUNT key min max |
| Karmaşıklık | O(log(N)); burada N üye sayısıdır. İşlem, puan aralığının boyutuna değil, dizin düzeyinde taranan öğe sayısına orantılıdır. |
| Açıklama | min ile max arasında kalan puanlara sahip üye sayısını döndürür. |
Seçenekler:
| Seçenek | Açıklama |
|---|---|
min, max |
Puan sınırları. Çok boyutlu puanlar için ayırıcı olarak # kullanın. Sınırsız sorgular için -inf ve +inf kullanın. Açık aralık için değerin önüne ( koyun; örneğin (1 5 1'den büyük ve en fazla 5 olan puanlara sahip üyeleri sayar. |
Dönüş değeri: Puan aralığındaki üye sayısı (tamsayı).
Örnek:
EXZCOUNT testkey (1#0#2 6#6#6
(integer) 1
EXZLEXCOUNT
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZLEXCOUNT key min max |
| Karmaşıklık | O(log(N)); burada N üye sayısıdır. İşlem, dizin düzeyinde taranan öğe sayısına orantılıdır. |
| Açıklama | Adları min ile max arasında sözcüksel sıraya göre kalan üye sayısını döndürür. Sonuçların öngörülebilir olması için tüm üyelerin aynı puana sahip olması gerekir. |
Üyelerin farklı puanları varsa sonuç tanımsızdır. Sözcüksel karşılaştırma C memcmp() işlevini kullanır. İki dize ortak bir öneki paylaşıyorsa daha uzun dize daha yüksek sırada yer alır.
Seçenekler:
| Seçenek | Açıklama |
|---|---|
min, max |
Üye adı sınırları. Kapalı aralık için önüne [, açık aralık için ( koyun. |
Dönüş değeri: Sözcüksel aralıktaki üye sayısı (tamsayı).
Örnek:
EXZLEXCOUNT zzz [a [b
(integer) 2
EXZRANKBYSCORE
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZRANKBYSCORE key score |
| Karmaşıklık | O(log(N)) |
| Açıklama | Belirli bir puanın anahtarda düşükten yükseğe sıralandığında (0. sıra = en düşük puan) hangi sırayı işgal edeceğini döndürür. Puan yoksa tahmini sırasını döndürür. Puan zaten varsa sıra, yeni puanın mevcut olandan önce ekleneceği varsayılarak hesaplanır. |
Dönüş değeri: Belirtilen puanın sırası (tamsayı).
Örnek:
EXZRANKBYSCORE testkey 2#0#2
(integer) 1
EXZREVRANKBYSCORE
| Kategori | Ayrıntılar |
|---|---|
| Sözdizimi | EXZREVRANKBYSCORE key score |
| Karmaşıklık | O(log(N)) |
| Açıklama | Belirli bir puanın anahtarda yüksekten düşüğe sıralandığında (0. sıra = en yüksek puan) hangi sırayı işgal edeceğini döndürür. Puan yoksa tahmini sırasını döndürür. Puan zaten varsa sıra, yeni puanın mevcut olandan sonra ekleneceği varsayılarak hesaplanır. |
Dönüş değeri: Belirtilen puanın sırası (tamsayı).
Örnek:
EXZREVRANKBYSCORE testkey 2#0#2
(integer) 1