2 Şubat 2021 Salı

Redis - Sorted Set Veri Yapısı Yani ZSET

Giriş
Komut listesi burada. Sorted set küçükten büyüğe sıralar. Yani şeklen şöyledir
Açıklaması şöyle. Sorted Set oyunlarda kullanılan Lider Tablosu (Leader board) gibi şeylerde kullanılır. En yüksek puana sahip ilk on oyuncuyu göster gibi şeyleri kolayca yapar
Redis’ Sorted Set data structure provides an easy and popular way to maintain a simple, accurate leaderboard. With this approach, you can update members’ scores by calling ZINCRBY and retrieve lists by calling ZREVRANGE with the desirable range.

ZADD Komutu - Upsert işlemi 
Söz dizimi şöyle.  key sorted set'in ismidir. Option olarak XX, NX, LT, GT, CH, INCR kullanılabilir.
ZADD <key> <option> <score> <member>
Örnek
Şöyle yaparız. İkinci kullanımda Mary ve Alice oyuncuları için puan tek komutla güncelleniyor.
ZADD players 790 Lester
(integer) 1

127.0.0.1:6379> ZADD players 980 Mary 850 Alice
(integer) 2
Örnek - GT
Açıklaması şöyle
Only update existing elements if the new score is greater than the current score. This flag doesn't prevent adding new elements.
Şöyle yaparız. İkinci ZADD işe yaramıyor çünkü GT ile verilen parametre 100'den küçük.
> ZADD CategoriesByPostCount GT 100 "Category5"
(integer) 1
> ZADD CategoriesByPostCount GT 98 "Category5"
(integer) 0
Doğrulamak için şöyle yaparız
> ZRANGE CategoriesByPostCount 0 9 WITHSCORES REV
1) "Category5"
2) "100"
3) "Category2"
4) "10"
5) "Category1"
6) "1"
ZCARD Komutu
Örnek
Şöyle yaparız
> ZCARD places
(integer) 4
ZCOUNT Komutu
Belirtilen puan aralığında kaç oyuncu olduğunu döndürür
Örnek
Şöyle yaparız
> ZCOUNT players 500 700
(integer) 4
ZINCRBY Komutu
Tablodaki değeri artırır. İkinci değer puan, üçüncü değer kullanıcıdır. 

Örnek
Şöyle yaparız. İşlem sonucunda Tom'un yeni puanı olan 570 gösterilir.
> ZINCRBY players 10 Tom
"570"
Şöyle yaparız. İşlem sonucunda Kendra'nın yeni puanı 5 eksilmiştir.
> ZINCRBY players -5 Kendra
"395"
Örnek
Şöyle yaparız. İşlem sonunda PL_1 30 puana sahiptir.
ZINCRBY scores 10 "PL_1"
ZINCRBY scores 20 "PL_2"
ZINCRBY scores 20 "PL_3"
ZINCRBY scores 25 "PL_4"
ZINCRBY scores 15 "PL_5"
ZINCRBY scores 20 "PL_1"
ZINCRBY scores 50 "PL_2"
ZINCRANGE Komutu
Belirtilen aralıktaki nesneleri döndürür.
Örnek
Şöyle yaparız.
ZINCRANGE scores 0 10
Çıktı olarak şunu alırız
1) "PL_2"
2) "PL_1"
3) "PL_4"
4) "PL_3"
5) "PL_5"
Örnek
Şöyle yaparız.
ZINCRANGE scores 0 10 WITHSCORES
Çıktı olarak şunu alırız
 1) "PL_2"
 2) "70"
 3) "PL_1"
 4) "30"
 5) "PL_4"
 6) "25"
 7) "PL_3"
 8) "20"
 9) "PL_5"
10) "15"
ZRANK Komutu
Bir oyuncunun puanı küçükten büyüğe doğru sıralanınca rank değerini döndürür.
Örnek
Şöyle yaparız Dave en az puana sahip oyuncudur
> ZRANK players Dave
(integer) 0
ZREM Komutu
Belirtilen oyucusu siler
Örnek
Şöyle yaparız
> ZREM players Barbara
(integer) 1
ZREMRANGEBYSCORE Komutu
Belirli bir score'dan küçük olanlar siler

ZREVRANK Komutu
Bir oyuncunun puanı büyükten küçükten doğru sıralanınca rank değerini döndürür.
Örnek
Şöyle yaparız Mary en yüksek puana sahip oyuncudur
> ZREVRANK players Mary
(integer) 0
ZRANGE Komutu
Puana göre artan şekilde sıralar.
Örnek
Puanı en az ilk 10 oyuncuyu görmek için şöyle yaparız
> ZRANGE players 0 9
1) "Dave"
2) "Kendra"
3) "Tom"
4) "Barbara"
5) "Jennifer"
6) "Peter"
7) "Frank"
8) "Lester"
9) "Alice"
10) "Mary"
Örnek
Şöyle yaparız.
> ZRANGE places 0 -1
1) "San Francisco"
2) "Mountain View"
3) "Palo Alto"
4) "San Jose"
ZREVRANGE Komutu 
Söz dizimi şöyle. Puana göre azalan şekilde sıralar.
ZREVRANGE <key> <start> <stop> [WITHSCORES]
Örnek
Şöyle yaparız
> ZREVRANGE players 0 9 WITHSCORES
1) "Mary"
2) "980"
3) "Alice"
4) "850"
5) "Lester"
6) "790"
7) "Frank"
8) "740"
9) "Peter"
10) "690"
11) "Jennifer"
12) "690"
13) "Barbara"
14) "650"
15) "Tom"
16) "570"
17) "Kendra"
18) "395"
19) "Dave"
20) "340"
ZSCORE Komutu 
Belirli bir oyuncunun puanını döndürür
Örnek
Şöyle yaparız
> ZSCORE players Peter
"690"
ZOPMIN Komutu 
Sorted Set'i dolaşabilmeyi sağlar.
Örnek
Şöyle yaparız
ZOPMIN orders:<item_id>

Hiç yorum yok:

Yorum Gönder