Редис КСТРИМ

Redis Kstrim



Детаљи ниског нивоа о Редис токовима

Редис токови су структура података само за додавање која обезбеђује скуп високо ефикасних операција читања и уметања са механизмом складиштења који је ефикасан у меморији. Интерно, Редис токови користе структуру података Радик стабла која је просторно оптимизовано стабло са високом меморијском ефикасношћу.

Редис токови чувају податке као листу уноса где се сваки унос састоји од парова кључ-вредност. На ниском нивоу, ови уноси су спаковани у макро чворове, као што је приказано у наставку.









У овом чланку фокусирамо се на уклањање уноса тока помоћу команде КСТРИМ, а горе поменути концепт блиско утиче на ефикасност операције уклањања. Обично је уклањање уноса Редис тока веома ефикасно ако се ради на нивоу макро чвора, али не и на улазном нивоу. Овај механизам се имплементира помоћу команде КСТРИМ о којој ћемо расправљати у следећем одељку.



Команда КСТРИМ

Команда КСТРИМ се користи за одсецање уноса тока на основу дате вредности прага. Праг може бити максималан број уноса по стриму или старији ИД уноса. Команда КСТРИМ прихвата тип прага као аргумент команде. Синтакса наредбе КСТРИМ је следећа.





КСТРИМ стреам_кеи МАКСЛЕН | МИНИД [ = | ~ ] гранична вредност [ ЛИМИТ цоунт ]

стреам_кеи : Кључ Редис тока.

МАКСЛЕН : Максимална дужина тока након скраћивања уноса. Биће уклоњени сви уноси који прелазе дужину тока, која је одређена граничном вредношћу. Овај аргумент је позитиван цео број.

МИНИД : Минимални ИД тока који би требало да остане након исечавања уноса. Сви уноси ће бити уклоњени који имају ИД-ове ниже од наведеног прага. Кад год наведете овај параметар, праг постаје ИД тока.

= оператор : Када је наведено, тачно сечење ће се извршити на основу вредности прага.

~ оператор : Када је наведено, скоро тачно сечење ће бити извршено на основу вредности прага и величине макро чвора.

гранична вредност : гранична вредност заснована на аргументу МАКСЛЕН или МИНИД.

ЛИМИТ цоунт : Максималан број уноса за уклањање.

Случај употребе 01 – Уклањање уноса стримова на основу максималне дужине

Претпоставимо да туристичка компанија одржава продавницу Редис како би пратила туристичке информације. Структура података Редис токова је коришћена за чување информација сваког туриста као парова кључ-вредност. Временом је ток порастао и планирају да задрже само последњих 1000 уноса. Дакле, идентификовали су да максимална дужина тока треба да буде 1000 у било ком тренутку. Команда КСТРИМ је коришћена да се то постигне.

За потребе демонстрације, прво ћемо креирати ток са 10 уноса на следећи начин. Команда КСАДД је коришћена за уметање.

кадд тоуристинфо * име Јацк цоунтри итали фамилимемс 5
кадд тоуристинфо * име харри цоунтри уса фамилимемс два
кадд тоуристинфо * име никомита земља јапан породичне меме 3
кадд тоуристинфо * име закарија земља индија породични мемови два
кадд тоуристинфо * име редмонд цоунтри бразил фамилимемс 6
кадд тоуристинфо * пронађено име земље Јапан породичне меме 3
кадд тоуристинфо * име Маријохн цоунтри уса фамилимемс два
кадд тоуристинфо * име лиза земља италија породичне меме 5
кадд тоуристинфо * име нимшикаа земља јапан породичне меме 3
кадд тоуристинфо * име нисха земља италија породичне меме 5

Хајде да користимо команду КСРАНГЕ да прегледамо туристичке информације о току на следећи начин.

кранге тоуристинфо - +

Излаз:

Као што се очекивало, 10 уноса тока је приказано овом командом.

У сврху демонстрације, скраћићемо ток где би његова максимална дужина била 5.

ктрим тоуристинфо маклен 5

Хајде да поново проверимо уносе тока помоћу команде КСРАНГЕ.

Како се и очекивало, пет улаза је исељено из тока, а његова дужина је 5.

Случај употребе 02 – Уклањање уноса стримова на основу ИД-ова тока

Узмимо пример где метеоролошка компанија прати временске информације за дату локацију користећи Редис токове. Сада желе да избришу старије уносе који више нису потребни. Можемо користити команду КСТРИМ користећи стратегију МИНИД, као што је приказано у наставку.

Прво ћемо креирати ток под називом веатхеринфо и додати му 5 уноса на следећи начин.

кадд веатхеринфо * темп 10 влажност педесет
кадд веатхеринфо * темп двадесет влажност 70
кадд веатхеринфо * темп 12 влажност 65
кадд веатхеринфо * темп петнаест влажност 88
кадд веатхеринфо * темп 18 влажност Четири, пет

Излаз:

Хајде да користимо команду КСТРИМ да уклонимо уносе који имају ИД-ове ниже од наведене граничне вредности.

ктрим веатхеринфо МИНИД 1660485503248 - 0

Минимални наведени ИД је повезан са трећим уносом. Дакле, уноси после трећег уноса који имају ниже ИД-ове биће обрисани.

Излаз:

Пошто нисмо експлицитно навели аргументе = или ~, команда подразумевано користи оператор =. Дакле, тачно обрезивање је обављено у оба случаја употребе. Ако сте експлицитно навели оператор ~, биће урађено скоро тачно сечење, као што је приказано у наставку.

Као што је приказано на горњој слици, команда КСТРИМ је коришћена са ~ оператором. Тражимо од команде да уклони све уносе који прелазе дужину од 100. Пошто не форсирамо команду КСТРИМ да изврши тачно сечење, она ће се фокусирати на ефикасност операције сечења. Дакле, неће уклонити непосредне уносе који припадају истом макро-чвору. Задржаће следећа три уноса који се налазе у истом макро-чвору и уклонити све макро-чворове после њих. То даје значајно побољшање перформанси него у приступу тачног сечења, што приморава команду да уложи додатни напор. Иста процедура се дешава када је праг заснован на ИД-овима уноса.

Аргумент ЛИМИТ ограничава број избачених уноса из наведеног тока, што се може користити за мало више побољшања перформанси.

Закључак

Укратко, наредба КСТРИМ се користи за уклањање уноса тока на основу вредности прага. Тип граничне вредности се може променити са контекстом који се специфицира коришћењем аргумената команде МАКСЛЕН и МИНИД. Као што је дискутовано, скраћивање се може обавити на два начина где ће операција скраћивања сматрати праг као тачну или приближну границу. Подразумевано, команда користи = оператор који се користи за тачно сечење. Са ~ оператором, можете да извршите приближно исецање као што је поменуто у горњем одељку. Све у свему, приближни приступ скраћивању и аргумент ЛИМИТ вам помажу да постигнете значајно повећање перформанси помоћу команде КСТРИМ.