Teknologian jakaminen

NoSQL redis -määritys ja optimointi

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Redis-tietokannan perusesittely ja vertailu

Redis (RemoteDictionaryServer, etäsanakirjatyyppi) on C-kielellä kirjoitettu avoimen lähdekoodin NoSQL-tietokanta. Redis toimii muistiin perustuen ja tukee pysyvyyttä. Se ottaa käyttöön avainarvo- (avainarvopari) -tallennusmuodon ja on välttämätön osa nykyistä hajautettua arkkitehtuuria.

1. Ei-relaatiotietokanta

NoSQL (NoSQL = Not Only SQL), joka tarkoittaa "ei vain SQL:ää", on yleinen termi ei-relaatiotietokantoille. Mainstream NoSQL-tietokantoja ovat Redis, MongBD, Hbase, CouhDB jne. Yllä olevat ei-relaatiotietokannat ovat täysin erilaisia ​​tallennusmenetelmiinsä, tallennusrakenteiltaan ja käyttöskenaarioiltaan. Joten mielestämme se on kokoelma ei-relaatiotietokantoja, ei yleinen termi, kuten relaatiotietokannat. Toisin sanoen muita tietokantoja kuin valtavirran relaatiotietokantoja voidaan pitää ei-relatiivisina. NOSQL-tietokantaa pidetään seuraavan sukupolven tietokantatuotteena sen ei-relatiivisen, hajautetun, avoimen lähdekoodin ja horisontaalisen laajenemisen etujen vuoksi.

2. Relaatiotietokanta

Relaatiotietokanta on strukturoitu tietokanta, joka perustuu relaatiomalliin ja on yleensä tietuesuuntautunut. Se käsittelee tietoja tietokantoissa matemaattisten käsitteiden ja menetelmien, kuten joukkoalgebran, avulla. Relaatiomalli viittaa kaksiulotteiseen taulukkomalliin, joten relaatiotietokanta on tietoorganisaatio, joka koostuu kaksiulotteisista taulukoista ja niiden välisistä suhteista. Reaalimaailmassa erilaisia ​​entiteettejä ja erilaisia ​​entiteettien välisiä suhteita voidaan esittää relaatiomalleilla. SQL-lause (Standard Data Query Language) on relaatiotietokantaan perustuva kieli, jota käytetään tietojen hakemiseen ja käyttämiseen relaatiotietokannassa.

3. Ei-relaatiotietokantojen tausta

Web2.0-verkkosivustojen nousun myötä relaatiotietokannat tulevat näkyviin, kun käsitellään Web2.0-sivustoja, erityisesti Web2.0:n puhtaasti dynaamisia verkkosivustoja, joissa on paljon dataa ja korkean samanaikaisuuden SNS (Social Networking Services, eli sosiaaliset verkkopalvelut). joita on vaikea ratkaista, kuten kolmen korkean ongelman.

(1) Korkea suorituskyky – korkeat samanaikaiset luku- ja kirjoitusvaatimukset tietokannassa

Web2.0-sivustot luovat dynaamisia sivuja ja tarjoavat dynaamista tietoa reaaliajassa käyttäjän henkilökohtaisten tietojen perusteella, joten dynaamista sivustaattista tekniikkaa ei voida käyttää. Siksi tietokannan samanaikainen kuormitus on erittäin korkea, yleensä yli 10 000 luku- ja kirjoituspyyntöä sekunnissa. Relaatiotietokanta pystyy vielä tuskin tukemaan kymmeniä tuhansia kyselypyyntöjä, mutta jos tiedonkirjoituspyyntöjä on kymmeniä tuhansia, kiintolevy I0 ei enää kestä sitä. Tavallisilla BBS-sivustoilla on usein suuria samanaikaisia ​​tiedonkirjoituspyyntöjä.

(2) Valtava tallennustila – vaatimukset tehokkaalle tallennukselle ja massiivisten tietojen käyttämiselle

SNS-sivustot, kuten Facebook ja Friendfeed, tuottavat suuren määrän käyttäjädynaamisia tietoja päivittäin. Esimerkiksi Friendfeed tuottaa vähintään 250 miljoonaa käyttäjän dynaamista tietoa kuukaudessa. Relaatiotietokantojen kyselyn tehokkuus on erittäin alhainen suoritettaessa SQL-kyselyjä 250 miljoonaa tietuetta sisältävässä taulukossa.

(3) Korkea skaalautuvuus ja korkea käytettävyys - Tietokantojen korkean skaalautuvuuden ja korkean käytettävyyden vaatimukset

Web-arkkitehtuurissa tietokanta on vaikein skaalata vaakasuunnassa. Kun käyttäjien ja käyntien määrä sovellusjärjestelmässä kasvaa päivä päivältä, tietokanta ei voi yksinkertaisesti laajentaa suorituskykyään ja latauskapasiteettiaan lisäämällä laitteisto- ja palvelinsolmuja, kuten Web-palveluita. Erityisesti joillakin verkkosivustoilla, joiden on tarjottava palveluita 24 tuntia vuorokaudessa, tietokannan päivityksiin ja laajennuksiin liittyy usein seisokkeja ylläpitoon ja tietojen siirtoon, ja työtaakka on erittäin suuri.

Relaatiotietokannoilla ja ei-relaatiotietokannoilla on omat ominaisuutensa ja sovellusskenaarionsa. Näiden kahden tiivis yhdistelmä tuo uusia ideoita Web2.0-tietokantojen kehittämiseen. Anna relaatiotietokantojen keskittyä suhteisiin ja ei-relaatiotietokantojen keskittyä tallennustilaan. Esimerkiksi MySQL-tietokantaympäristössä, jossa lukeminen ja kirjoittaminen on erotettu toisistaan, usein käytettävät tiedot voidaan tallentaa ei-relaatiotietokantaan pääsynopeuden parantamiseksi.

4. Rediksen edut

Sillä on erittäin korkeat tiedon luku- ja kirjoitusnopeudet. Tietojen lukunopeus voi olla jopa 110 000 kertaa sekunnissa ja tietojen kirjoitusnopeus jopa 81 000 kertaa sekunnissa.

Tukee monipuolisia tietotyyppejä, ei vain tue yksinkertaisia ​​avainarvotyyppisiä tietoja, vaan tukee myös tietotyyppitoimintoja, kuten merkkijonoja, luetteloita, tiivisteitä, joukkoja ja järjestettyjä sarjoja.

Tukee tietojen pysyvyyttä Muistissa olevat tiedot voidaan tallentaa levylle ja ladata uudelleen käytettäväksi uudelleenkäynnistyksen yhteydessä.

Atomic, kaikki Redis-operaatiot ovat atomisia.

Tukee tietojen varmuuskopiointia, eli tietojen varmuuskopiointia master-salve-tilassa.

Redis on muistipohjainen tietokanta, ja välimuisti on yksi sen yleisimmistä sovellusskenaarioista. Lisäksi Rediksen yleiset sovellusskenaariot sisältävät myös toiminnot uusimpien N-tietojen hankkimiseksi, sovellusten luokittelua, laskurisovelluksia, tallennussuhteita, reaaliaikaisia ​​analyysijärjestelmiä ja kirjaamista.

2. Rediksen asennus ja optimointi

1: Asennus

[root@localhost ~]# systemctl stop firewalld //Kokeellisessa ympäristössä palomuurin sammuttaminen ei vaikuta tuotantoympäristössä. Yritä lisätä palomuurikäytäntö.

[root@localhost ~]# setenforce 0 //Poista ydin, joka estää sovelluksen toiminnan.

[root@localhost ~]# yum -y install gcc* zlib-devel //Lataa tar-paketin purkamiseen tarvittavat työkalut

[root@localhost ~]#tar xvzf redis-4.0.9.tar.gz //redis on avoimen lähdekoodin ilmainen sovellus. Voit ladata tämän paketin viralliselta verkkosivustolta

[root@localhost ~]#cd redis-4.0.9/

[root@localhost redis-4.0.9]# merkki

Ilmoitus:

Kun teet, seuraava virheilmoitus saattaa ilmestyä:

Ratkaisu 1: Käytätee MALLOC=libc määrittää muistin varaajan libc:llekoota

Ratkaisu 2: tee puhdas && make distclean

[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install

[root@localhost ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/

[root@localhost redis-4.0.9]# cd /root/redis-4.0.9/utils/

[root@localhost utils]# ./install_server.sh

Huomautus:

Määritystiedosto: /etc/redis/6379.conf //Asetustiedoston polku

Lokitiedosto: /var/log/redis_6379.log //Lokitiedoston polku

Tietohakemisto: /var/lib/redis/6379 //Tiedostopolku

Suoritettava: /usr/local/redis/bin/redis-server //suoritettava tiedostopolku

Cli Suoritettava: /usr/local/redis/bin/redis-cli //Asiakkaan komentorivityökalu

2: Katso prosessi

[root@localhost utils]# netstat -anpt | grep redis

3: Huollon ohjaus

[root@localhost ~]#/etc/init.d/redis_6379 stop

[root@localhost ~]#/etc/init.d/redis_6379 alku

[root@localhost ~]#/etc/init.d/redis_6379 uudelleenkäynnistys

[root@localhost ~]#/etc/init.d/redis_6379 tila

4: Konfigurointiparametrien muuttaminen

[root@localhost ~]#vim /etc/redis/6379.conf

sitoa 127.0.0.1 192.168.10.101    //Kuunteleva isäntäosoite

portti 6379 //portti

demonisoida kyllä //Ota demoniprosessi käyttöön

pidfile /var/run/redis_6379.pid //Määritä PID-tiedosto

lokitason ilmoitus //lokitaso

lokitiedosto /var/log/redis_6379.log //Määritä lokitiedosto

[root@localhost~]#/etc/init.d/redis_6379 uudelleenkäynnistys

[root@localhost utils]# netstat -anpt | grep redis

3. Redis-komentotyökalu

Ø redis-palvelin: työkalu Rediksen käynnistämiseen;

Ø redis-benchmark: käytetään havaitsemaan Rediksen toiminnan tehokkuus tässä koneessa;

Ø redis-check-aof: Korjaa AOF:n pysyvyystiedosto;

Ø redis-check-rdb: Korjaa RDB-pysyvyystiedostot;

Ø redis-cli: Redis-komentorivityökalu.

1: redis-cli komentorivityökalu

(1) Yhdistä paikalliseen redis

[root@localhost ~]# redis-cli

127.0.0.1:6379>

(2) Testaa, onko redis-palvelu käynnistetty

127.0.0.1:6379> ping

PONG

(3) Etäyhteys

[root@localhost ~]#redis-cli -h 192.168.10.101 -p 6379

2: Hae apua

Ø apua@<group> :Saada<group> Luettelo komennoista kohteessa ;

Ø apua<command> : Pyydä apua tiettyyn komentoon;

Ø apua<tab> : Hanki luettelo aiheista, joista voi olla apua.

Huomautus:

Ø apua<tab> : Hanki luettelo aiheista, joista voi olla apua.

Kun olet kirjoittanut ohjeen, paina sarkainnäppäintä

(1)Näytä kaikki List-tietotyyppiin liittyvät komennot

127.0.0.1:6379&gt;help @list

(2)Katso set-komennon ohje

127.0.0.1:6379&gt;ohjesarja

3: redis-benchmark-testaustyökalu

redis-benchmark on virallinen Redis-suorituskyvyn testaustyökalu, jolla voidaan tehokkaasti testata Redis-palvelujen suorituskykyä.

Ø -h: Määritä palvelimen isäntänimi;

Ø -p: Määritä palvelimen portti;

Ø -s: Määritä palvelinpistoke;

Ø -c: Määritä samanaikaisten yhteyksien määrä;

Ø -n: Määritä pyyntöjen lukumäärä;

Ø -d: Määritä SET/GET-arvon datakoko tavuina;

Ø -k:1 = pysy hengissä 0 = yhdistä uudelleen;

Ø -r: SET/GET/INCR käyttää satunnaisia ​​avaimia, SADD käyttää satunnaisia ​​arvoja;

Ø -P: Siirto putkien kautta<numreq> kysyä;

Ø -q: Pakota lopettamaan uudelleen. Vain kysely/sekuntiarvot näytetään;

Ø --csv: Tulostus CSV-muodossa;

Ø -l: Luo silmukka ja suorita testi pysyvästi;

Ø -t: Suorita vain pilkuilla eroteltu testikomentojen luettelo;

Ø -I: Lepotila. Avaa vain N vapaata yhteyttä ja odota.

(1) Testipyynnön suorituskyky

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000 //Lähetä 100 samanaikaista yhteyttä ja 100 000 pyyntötestiä Redis-palvelimelle IP-osoitteella 192.101.3 ja portilla071168.

Huomautus:

Ø -h: Määritä palvelimen isäntänimi;

Ø -p: Määritä palvelimen portti;

Ø -c: Määritä samanaikaisten yhteyksien määrä;

Ø -n: Määritä pyyntöjen lukumäärä;

====== MSET (10 näppäintä) ======

100 000 pyyntöä suoritettu 1,02 sekunnissa

100 rinnakkaista asiakasta ##100 samanaikaista yhteyttä

3 tavun hyötykuorma

pysyä hengissä: 1

87,25 % &lt;= 1 millisekuntia ##87.25 % komennon suoritusajoista on enintään 1 millisekunti

99,90 % &lt;= 2 millisekuntia

100,00 % &lt;= 2 millisekuntia

97943,19 pyyntöä sekunnissa #Pyyntöjen määrä sekunnissa

(2) Testaa pääsyn suorituskykyä

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

Huomautus:

Ø -h: Määritä palvelimen isäntänimi;

Ø -p: Määritä palvelimen portti;

Ø -d: Määritä SET/GET-arvon datakoko tavuina;

Ø -q: Pakota lopettamaan uudelleen. Vain kysely/sekuntiarvot näytetään;

PING_INLINE: 121506,68 pyyntöä sekunnissa //Kuinka monta PING-toimintoa suoritetaan sekunnissa

PING_BULK: 124378,11 pyyntöä sekunnissa

SET: 121654,50 pyyntöä sekunnissa //Kuinka monta kertaa sekunnissa SET-näppäimen vlaue on valmis

HANKI: 122100,12 pyyntöä sekunnissa //Kuinka monta GET-avainaluetta on suoritettu sekunnissa

INCR: 118764,84 pyyntöä sekunnissa //Kuinka monta atomilaskentaa suoritetaan sekunnissa

LPUSH: 112612,61 pyyntöä sekunnissa

RPUSH: 118623,96 pyyntöä sekunnissa

LPOP: 107874,87 pyyntöä sekunnissa

RPOP: 114416,48 pyyntöä sekunnissa

SADD: 123304,56 pyyntöä sekunnissa

HSET: 122249,38 pyyntöä sekunnissa

SPOP: 128040,97 pyyntöä sekunnissa

LPUSH (tarvitaan LRANGE-vertailuon): 116686,12 pyyntöä sekunnissa

LRANGE_100 (ensimmäiset 100 elementtiä): 40016,00 pyyntöä sekunnissa

LRANGE_300 (ensimmäiset 300 elementtiä): 11 991,85 pyyntöä sekunnissa

LRANGE_500 (ensimmäiset 450 elementtiä): 7381,71 pyyntöä sekunnissa

LRANGE_600 (ensimmäiset 600 elementtiä): 5230,67 pyyntöä sekunnissa

MSET (10 näppäintä): 92421,44 pyyntöä sekunnissa //Useita näppäimiä v sekunnissalauePyyntöjen määrä

(3)Aseta ja paina toiminnan suorituskykyä

[root@localhost ~]# redis-benchmark -t set,lpush -n 100000 -q //Testaa Redis-palvelun suorituskykyä tällä koneella asetus- ja lpush-toimintojen aikana.

Huomautus:

Ø -n: Määritä pyyntöjen lukumäärä;

Ø -q: Pakota lopettamaan uudelleen. Vain kysely/sekuntiarvot näytetään;

Ø -t: Suorita vain pilkuilla eroteltu testikomentojen luettelo;

SET: 121951,22 pyyntöä sekunnissa

LPUSH: 127226,46 pyyntöä sekunnissa

4. Redis Yleiset tietokantakomennot

Ø aseta: Tallenna tiedot Peruskomentomuoto on aseta avaimen arvo

Ø saada: Hae tiedot, peruskomentomuoto on hanki avain

1avain Aiheeseen liittyvät komennot

olla olemassa Redis tietokannassa, kanssa avain Asiaankuuluvat komennot sisältävät pääasiassa seuraavat.

1) lisää avain-arvo-pareja

käyttää avaimet Komento voi ottaa luettelon avainarvoista, jotka ovat sääntöjen mukaisia. Yleensä se voidaan yhdistää* ,? vaihtoehtoja käytettäväksi.

127.0.0.1:6379>joukko k1 1

OK

127.0.0.1:6379>joukko k2 2

OK

127.0.0.1:6379>sarja k3 3

OK

127.0.0.1:6379>sarja v1 4

OK

127.0.0.1:6379>sarja v5 5

OK

(2) Näytä kaikki nykyisen tietokannan avaimet

127.0.0.1:6379>AVAimet  *  

1) "opettaja"

2) "k1"

3) "k2"

4) "k3"

5) "v1"

6) "v5"

127.0.0.1:6379>sarja v22 5

OK

(3) Tarkastele nykyistä tietokantaa käyttämällä v tiedot alussa

127.0.0.1:6379>AVAimet v*    

1) "v1"

2) "v5"

3) "v22"

(4) Tarkastele nykyistä tietokantaa käyttämällä v Sisältää mitä tahansa dataa alun jälkeen

127.0.0.1:6379>AVAimet v?   

1) "v1"

2) "v5"

(5) Tarkastele nykyistä tietokantaa käyttämällä v alku v Sisältää mitkä tahansa kaksi numeroa alun jälkeen

127.0.0.1:6379>AVAimet v??   

1) "v22"

2:olemassa

olemassa Komento voi määrittää, onko avainarvo olemassa

127.0.0.1:6379>opettaja on olemassa

(kokonaisluku) 1

Tulos on 1, mikä tarkoittaa opettaja avain on olemassa

127.0.0.1:6379>teetä on olemassa

(kokonaisluku) 0

Tulos on 0, mikä tarkoittaa teetä avainta ei ole olemassa

3:del

del Komento voi poistaa määritetyn avain

127.0.0.1:6379>avaimet*

1) "opettaja"

2) "v1"

3) "v22"

4) "k3"

5) "k1"

6) "k2"

7) "v5"

127.0.0.1:6379> del v5

(kokonaisluku) 1

127.0.0.1:6379>hanki v5

(nolla)

4:tyyppi

käyttää tyyppi Komento voidaan saada avain vastaava arvo arvon tyyppi

127.0.0.1:6379>tyyppi k1

merkkijono

Huomautus:

Redisin tukemat tietotyypit

  • Merkkijono: Yksinkertaisin tyyppi, joka on tavallinen set and get, jota käytetään avainarvojen välimuistiin.
  • Hash: Kartan kaltainen rakenne Yleensä strukturoidut tiedot, kuten objekti, voidaan tallentaa välimuistiin redisissä.
  • Lista: Lista on järjestetty luettelo. Voit käyttää luetteloa joidenkin listatyyppisten tietorakenteiden, kuten faniluetteloiden, artikkelien kommenttiluetteloiden, tallentamiseen.
  • Joukko: Joukko on järjestämätön kokoelma, joka poistaa automaattisesti kaksoiskappaleet.
  • Lajiteltu joukko: Lajiteltu joukko on lajiteltu joukko, josta poistetaan kaksoiskappaleet, mutta joka voidaan lajitella sisään kirjoitettaessa, pisteet annetaan ja lajitellaan automaattisesti tuloksen mukaan.

5:nimeä uudelleen

nimeä uudelleen Komento on olemassa olevalle avain nimeä uudelleen

Varsinaisessa käytössä on suositeltavaa käyttää olemassa Komento nähdäksesi kohteen avain on olemassa, ja päätä sitten, suoritetaanko se nimeä uudelleen komento välttääksesi tärkeiden tietojen ylikirjoituksen

127.0.0.1:6379>avaimet v*

1) "v1"

2) "v22"

127.0.0.1:6379>nimeä uudelleen v22 v2

OK

127.0.0.1:6379>avaimet v*

1) "v1"

2) "v2"

127.0.0.1:6379>hanki v1

"4"

127.0.0.1:6379>hanki v2

"5"

127.0.0.1:6379>nimeä uudelleen v1 v2

OK

127.0.0.1:6379>hanki v1

(nolla)

127.0.0.1:6379>hanki v2

"4"

6:renamenx

renamenx Komennon tehtävänä on muokata olemassa olevaa avain Nimeä uudelleen ja tarkista, onko uusi nimi olemassa.

käyttäärenamenx Kun komento nimetään uudelleen, jos kohde avain Jos se on olemassa, sitä ei nimetä uudelleen.

127.0.0.1:6379>avaimet*

1) "opettaja"

2) "k3"

3) "k1"

4) "k2"

5) "v2"

127.0.0.1:6379>hanki opettaja

"zhanglong"

127.0.0.1:6379>hanki v2

"4"

127.0.0.1:6379>renamenx v2 opettaja

(kokonaisluku) 0

127.0.0.1:6379>avaimet*

1) "opettaja"

2) "k3"

3) "k1"

4) "k2"

5) "v2"

127.0.0.1:6379>hanki opettaja

"zhanglong"

127.0.0.1:6379>hanki v2

"4

7:db-koko

db-koko Komennon tarkoitus on tarkastella nykyistä tietokantaa avain Lukumäärä.

127.0.0.1:6379> db-koko

(kokonaisluku) 5

5. Useiden tietokantojen yhteiset komennot

1: Vaihtaminen useiden tietokantojen välillä

Redis Mukana oletuksena ilman muutoksia 16 tietokanta, tietokannan nimi on numero 0-15 nimettävä järjestyksessä

(1)Vaihda sarjanumeroon 10 tietokanta

127.0.0.1:6379>valitse 10

OK

(2)Vaihda sarjanumeroon 15 tietokanta

127.0.0.1:6379[10]>valitse 15

OK

(3)Vaihda sarjanumeroon 0 tietokanta

127.0.0.1:6379[15]>valitse 0

2: Tietojen siirtäminen useiden tietokantojen välillä

Redis Useat tietokannat ovat jossain määrin suhteellisen riippumattomia, esimerkiksi tietokannassa 0 Säilytä yllä k1 data, muualla 1-15 Sitä ei voi tarkastella tietokannassa.

127.0.0.1:6379>aseta k1 100

OK

127.0.0.1:6379>hanki k1

"100"

127.0.0.1:6379>valitse 1

OK

127.0.0.1:6379[1]>hanki k1

(nolla)

127.0.0.1:6379[1]>valitse 0 //Vaihda kohdetietokantaan 0

OK

127.0.0.1:6379>hanki k1 //Tarkista, onko kohdetietoja olemassa

"100"

127.0.0.1:6379>Siirrä k1 1 //tietokanta 0 keskellä k1 Siirrä tietokantaan 1 keskellä

(kokonaisluku) 1

127.0.0.1:6379>valitse 1 //Vaihda kohdetietokantaan 1

OK

127.0.0.1:6379[1]>hanki k1 //Näytä siirretyt tiedot

"100"

127.0.0.1:6379[1]> valitse 0

OK

127.0.0.1:6379> hanki k1 //tietokannassa 0 Ei voida katsoa sisään k1 arvo

(nolla)

3: Tyhjennä tiedot tietokannasta

Tyhjennä nykyiset tietokantatiedot käyttämällä FLUSHDB

Komentojen toteuttaminen tyhjennä kaikki tietokannan tiedot FLUSHALL Komennon toteutus

6. Redis sinnikkyys

Redis Kaikki tiedot tallennetaan muistiin ja tallennetaan sitten asynkronisesti levylle ajoittain.(Tätä kutsutaanPuolipysyvä tila”)Voit myös kirjoittaa jokaisen tietomuutoksen kohtaan a liitä vain tiedosto (aof)sisään(Tätä kutsutaanTäysi pysyvyystila”)

Koska Redis-tiedot on tallennettu muistiin, jos pysyvyyttä ei ole määritetty,Redis Uudelleenkäynnistyksen jälkeen kaikki tiedot menetetään.Siksi on tarpeen ottaa käyttöönRedis Pysyvyystoiminto tallentaa tiedot levylle Redis Uudelleenkäynnistyksen jälkeen tiedot voidaan palauttaa levyltä.Redis Kaksi menetelmää on säädetty pysyvyyttä, yksi on RDBRedis-tietokanta Pysyvyys (periaate on ReidsMuistissa olevan tietokannan kirjaamisen ajoitus kaatopaikka levylle RDB sinnikkyys), toinen on AOFliittää vain tiedostoPysyvyys (periaate on Reids Toimintaloki kirjoitetaan tiedostoon liitteenä).

1:RDB ja AOF Ero

(1) Mikä on RDB?

Oletusmenetelmä

RDB-pysyvyys on prosessi, jossa luodaan tilannekuva nykyisestä prosessitiedosta ja tallennetaan se kiintolevylle. RDB-pysyvyys on jaettu manuaaliseen liipaisuun ja automaattiseen liipaisuun.

Liipaisumekanismi: Manuaalinen laukaisu vastaa tallennus- ja bgsave-komentoja.

save-komento: estää nykyisen Redis-palvelimen, kunnes RDB-prosessi on valmis. Tapauksissa, joissa on paljon muistia, se aiheuttaa aikaeston. Ei suositella käytettäväksi verkkoympäristöissä.

bgsave-komento: Redis-prosessi suorittaa haarukkatoiminnon (prosessin luomiseen käytetty toiminto) aliprosessin luomiseksi. RDB-pysyvyysprosessi on vastuussa aliprosessista ja päättyy automaattisesti valmistumisen jälkeen. Lukitus tapahtuu vain haarukkavaiheen aikana.

(2) RDB:n edut ja haitat:

RDB:n edut:

RDB on kompakti, pakattu binääritiedosto, joka edustaa tilannekuvaa Redis-tiedoista tietyllä hetkellä. Se sopii erittäin hyvin varmuuskopiointiin, täydelliseen kopiointiin ja muihin skenaarioihin. Suorita esimerkiksi bgsave-varmuuskopio 6 tunnin välein ja kopioi RDB-tiedosto etäkoneeseen tai tiedostojärjestelmään katastrofipalautusta varten.

Redis lataa RDB:n ja palauttaa tiedot paljon nopeammin kuin AOF-menetelmä.

RDB:n haitat:

RDB-tilassa olevat tiedot eivät voi saavuttaa reaaliaikaista pysyvyyttä/toisen tason pysyvyyttä. Koska joka kerta kun bgsave ajetaan, haarukkatoiminto suoritetaan lapsiprosessin luomiseksi, mikä on raskas operaatio ja toistuvan suorituksen kustannukset ovat liian korkeat.

RDB-tiedostot tallennetaan tietyssä binäärimuodossa Redis-versioiden kehityksen aikana on olemassa useita RDB-versioiden muotoja. Ongelmana on, että Redis-palvelun vanha versio ei ole yhteensopiva RDB-muodon uuden version kanssa.

2. Mikä on AOF?

AOF (apppend only file) pysyvyys: tallenna jokainen kirjoituskomento itsenäiseen lokiin ja suorita sitten AOF-tiedoston komento uudelleen tietojen palauttamiseksi uudelleenkäynnistyksen yhteydessä. AOF:n päätehtävä on ratkaista reaaliaikainen tietojen pysyvyyden ongelma. Se on nyt Redisin pysyvyyden valtavirta.

Kriteerit näiden kahden välillä valinnalle:

Uhraa jonkin verran suorituskykyä vastineeksi paremmasta välimuistin johdonmukaisuudesta (AOF),

Kun kirjoitustoiminnot ovat toistuvia, älä ota varmuuskopiointia käyttöön vastineeksi paremmasta suorituskyvystä ja odota manuaalista käyttöä. Tallentaa kun, tee varmuuskopio uudelleen (RDB

Huomautus:

Jos pysyvä tiedosto on ladattava uudelleenkäynnistyksen jälkeen, AOF-tiedostot valitaan.

Jos RDB on ensin käytössä ja sitten AOF käytössä, ja RDB säilytetään ensin, AOF korvaa RDB-tiedoston sisällön.

3:Redis Pysyvyyskokoonpano

(1)RDB Pysyvyyskokoonpano

[root@localhost ~]# vim /etc/redis/6379.conf

Avaa 6379.conf Hae tiedoston jälkeen Tallentaa, näet kokoonpanotiedot alla olevan kuvan mukaisesti.

  • Ø tallenna 900 1: Jos vähintään 1 avain muuttuu 900 sekunnin (15 minuutin) jälkeen, tyhjennä muistin tilannekuva.
  • Ø tallenna 300 10: 300 sekunnin (5 minuutin) jälkeen, jos vähintään 10 näppäintä on muuttunut, tyhjennä muistin tilannekuva.
  • Ø tallenna 60 10000: 60 sekunnin (1 minuutin) jälkeen, jos vähintään 10000 näppäintä on muuttunut, tyhjennä muistin tilannekuva.
  • dbfilename dump.rdb: RDB-tiedoston nimi ##254 rivi
  • dir /var/lib/redis/6379: RDB-tiedoston polku ##264 rivi
  • rdb-pakkaus kyllä: pakataanko rivi ##242

(2) AOF Pysyvyyskokoonpano

olla olemassa Redis Asetustiedostossa on kolme synkronointimenetelmää, ne ovat:

  • appendonly kyllä: Ota AOF-pysyvyys käyttöön (oletus on ei) ##673 rivi
  • appendfilename "appendonly.aof": AOF-tiedoston nimi ##677 rivi
  • # appendfsync aina
  • appendfsync everysec
  • # appendfsync no

aina: synkroninen pysyvyys, aina kun tiedot muuttuvat, ne kirjoitetaan levylle välittömästi

everysec: Suositellaan oletuksena, tallenna asynkronisesti joka sekunti (oletusarvo)

ei: Ei synkronointia, joten käyttöjärjestelmä päättää synkronointitavan

  • aof-load-trumpated kyllä ​​##769行

Ohita viimeinen mahdollisesti ongelmallinen ohje

[root@localhost ~]#/etc/init.d/redis_6379 uudelleenkäynnistys

(2) AOF:n uudelleenkirjoitus

ratkaistakseen AOF Jos tiedostokoko kasvaa edelleen, käyttäjät voivat raportoida osoitteeseen Redis lähettää BGREWRITEAOFTilaus.BGREWRITEAOF Komento poistetaan kautta AOF tiedostossa olevat ylimääräiset komennot ohittavat (kirjoittaa uudelleenAOFtiedosto, tee AOF Pidä tiedostokoko mahdollisimman pienenä.

127.0.0.1:6379&gt; bgrewriteaof

Taustalla vain liitetiedoston uudelleenkirjoitus aloitettu

# Kun loki on BGREWRITEAOF,josno-appendfsync-on-rewriteAseta arvoon kyllä, mikä tarkoittaa, että uusia kirjoitustoimintoja ei synkronoida fsyncin kanssa, vaan ne tallennetaan vain väliaikaisesti puskuriin. , välttääksesi levyn IO-toimintoristiriidat, odota, kunnes uudelleenkirjoitus on valmis, ennen kuin kirjoitat. Rediksen oletusarvo on ei

no-appendfsync-on-rewrite no

# Kun nykyinen AOF-tiedoston koko on kaksi kertaa AOF-tiedoston koko viimeisen lokin uudelleenkirjoituksen aikana, tapahtuu BGREWRITEAOF-toiminto.

automaattinen uudelleenkirjoitusprosentti 100

Huomautus:

100 viittaaAOF-tiedoston kasvusuhde viittaa nykyisen AOF-tiedoston kasvusuhteeseen verrattuna viimeiseen uudelleenkirjoitukseen.100 on kaksi kertaa

#Nykyisen AOF-tiedoston vähimmäisarvo BGREWRITEAOF-komennon suorittamiseksi, jotta vältetään toistuva BGREWRITEAOF, koska tiedostokoko on pieni, kun Reids käynnistetään ensimmäisen kerran.

auto-aof-rewrite-min-size 64mb

7. Suorituskyvyn hallinta

1: Näytä muistitiedot

192.168.9.236:7001> tieto muisti

used_memory:1210776 #Käytetyn muistin koko,tavuissa
used_memory_human:1,15M # Näyttö yksiköllä,paikassa M
used_memory_rss:7802880 # Kuinka paljon muistia redis vie käyttöjärjestelmän näkökulmasta?
used_memory_rss_human:7.44M # Näyttö yksiköllä
maxmemory:1073741824 # Muistin enimmäiskoko
maxmemory_human:1.00G # Näyttö yksiköllä

2: Kierrätysstrategia

maxmuisti-politiikka: Kierrätysstrategia

Ø volatile-lru: se sallii Redis Valitse koko tietojoukosta vähiten käytetty avain Poistaa

Ø haihtuva-ttlEliminoi avaimen vanhenemisajan mukaan 

Ø haihtuva-satunnainen: Valitse satunnaisesti poistettavat tiedot tietokokoelmasta asetetulla vanhenemisajalla;

Ø allkeys-lru:käyttää LRU Algoritmit poistavat tiedot kaikista tietojoukoista;

Ø kaikki avaimet-satunnainen: Valitse satunnaisesti tiedot poistettaviksi tiedonkeruusta;

Ø häätö: Poista tietojen poistaminen käytöstä (oletusarvo)

Huomautus:

Aseta avaimen vanhenemisaika

vanhenee v1 10

v1:n vanhenemisaika on 10 sekuntia

Huomautus:

kun Redis Se on hankittava takaisin muistipaineen vuoksi avain tunnin,Redis Ensimmäinen harkinta ei ole kierrättää vanhimpia tietoja, vaan vähiten käytettyjä tietoja. avain tai vanhentumassa avain Valitse yksi satunnaisesti avain, poistettu tietojoukosta

8. Aseta salasana redisille

1: Asetusmenetelmä

Tapa 1. Aseta salasana määritystiedoston redis.conf kautta

Etsi vaadittava salasana ja sen jälkeen salasana Se on oletuksena kommentoitu, eli salasanaa ei vaadita oletuksena seuraavasti:

Avaa kommentti, aseta se omaksi salasanaksesi ja käynnistä uudelleen

Tapa 2. Aseta salasana nimeämällä

Käytä redis-cli muodostaaksesi yhteyden redisiin ja suorita seuraava komento

konfiguraatiosarja vaatia passin 123456

Kun suoritus on valmis, sinun ei tarvitse käynnistää uudelleen Sinun on annettava salasanasi, kun poistut asiakasohjelmasta ja kirjaudut sisään uudelleen.

2. Kytkentätapa

1. Anna salasanasi yhteyden muodostamisen yhteydessä

[root@localhost bin]# ./redis-cli -a 123456

2. Yhdistä ensin ja anna sitten salasana

[root@localhost bin]# ./redis-cli127.0.0.1:6379&gt; todennus 123456

3: Sulje menetelmä

[root@localhost bin]# ./redis-cli -a 123456 shutdown

4: Ero

1) Asetustiedostoa muuttamalla asetettu salasana tulee voimaan pysyvästi.

2) Asetustiedostossa määritetyn salasanan muuttaminen edellyttää uudelleenkäynnistyksen voimaantuloa. Käytä komennolla asetettua salasanaa astuakseen voimaan uloskirjautumisen ja uudelleen sisäänkirjautumisen jälkeen, ja se raukeaa uudelleenkäynnistyksen jälkeen.

3) Komennon prioriteetti on korkeampi kuin asetustiedoston prioriteetti