Prej napisana razpršena ključavnica na osnovi zk je naslednja:
Redis izvaja načelo porazdeljenega zaklepanja:
Načelo implementacije porazdeljenih ključavnic v Redisu je, da pokličete ukaz SETNX v redisu, in če ključ že obstaja, ukaz SETNX ne naredi ničesar. Ukaz vrne 1, ko nastavitev uspe, in 0, ko nastavitev ne uspe.
Najprej naša spletna stran simulira 10.000 izdelkov, nato pa napiše konzolo, ki simulira HTTP zahtevo, kar traja 40 sekund za dokončanje nakupa, upodobitev pa je naslednja:
Ustvarite novo spletno stran ASP.NET Core 3.1 in paket redis lock je naslednji:
Vidim, da je veliko zaklepov za sprostitev na internetu zapisanih takole:
Vendar pa se zdi, da obstaja težava; v primeru sočasnosti je mogoče vrniti true ob razsodbi, res je ključavnica, dodana sama po sebi, vendar ko je zaklep izbrisan, je lahko vV skrajnih primerih, zaklep je pridobil drug niz, v primeru, da je zaklep nekoga drugega izbrisan.
Zato morate pri pridobivanju ključavnice odpreti nit, da podaljšate čas trajanja ključavnice.
Vmesnik WeatherForecastController je naslednji:
Spletno stran API-ja lahko zaženete preko ukazne vrstice, ki jo je mogoče enostavno ponovno zagnati, kot sledi:
Ustvarite novo .NET Core maketo HTTP zahteve za nakup snap-a, koda je naslednja:
Če je kaj narobe, hvala, ker ste to popravili.
Na koncu priložite izvorno kodo:
Turisti, če želite videti skrito vsebino te objave, prosim Odgovoriti
|