Heim  >  Artikel  >  Datenbank  >  So verwenden Sie Redis

So verwenden Sie Redis

silencement
silencementOriginal
2019-06-04 15:49:022391Durchsuche

In diesem Artikel wird die grundlegende Verwendung von Redis vorgestellt.

So verwenden Sie Redis

1. Redis-Basisteil:

Redis anwendbare Anlässe

1. Der Vorgang zum Abrufen der neuesten N-Daten

2. Ranking-Anwendung, Abrufen des TOP-N-Vorgangs

3 Stellen Sie die Anwendung genau ein

4. Zähleranwendung

5. Erhalten Sie alle Datendeduplizierungswerte für einen bestimmten Zeitraum

6. Anti-Spam-System

7.Pub/Sub baut Echtzeit-Messaging-System auf

8. Warteschlangensystem erstellen

9. Cache

SET-Vorgänge 110.000 Mal pro Sekunde, GET-Vorgänge 81.000 Mal pro Sekunde und die Serverkonfiguration ist wie folgt:

Linux 2.6, Xeon X3320 2,5 GHz.

Die Die Stackoverflow-Website verwendet Redis als Cache-Server.

Die Daten werden gleichzeitig auch auf die Festplatte geschrieben. Somit sind die Daten sicher (außer bei plötzlichen Stromausfällen wird ein Neustart des Dienstes in die Datei dump.rdb geschrieben)

1) Installation:

tar zxvf redis-2.6.9.tar.gz
cd redis-2.6.9
make
cd src && make install

2) Verschieben Sie den Speicherort der Konfigurationsdatei (zur Vereinfachung der Verwaltung)

cd /usr/local/
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
mv /lamp/redis-2.6.9/redis.conf /usr/local/redis/etc
cd /lamp/redis-2.6.9/src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

3) Ändern Sie die Konfigurationsdatei

vi /usr/local/redis/etc/redis.conf

Ändern Sie no in daemonize no in yes [ja bezieht sich auf die Ausführung im Hintergrund]

4) Start/zufälliger Start:

cd /usr/local/redis/bin
./redis-server /usr/local/redis/etc/redis.conf#启动redis并指定配置文件。
#vi /etc/rc.local #设置随机启动。
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

5) Überprüfen Sie, ob der Start erfolgreich ist

ps -ef | grep redis
netstat -tunpl | grep 6379#查看端口是否占用。

6) Client/Exit eingeben

cd /usr/local/redis/bin
./redis-cli#进入
quit#退出

7) Redis schließen

pkill redis-server#关闭
./redis-cli shutdown#关闭

Redis-Sicherheit

Sicherheit von Redis??? (durch die folgenden 4 Methoden)

1.

2. Fügen Sie die folgende Konfigurationszeile zur Konfigurationsdatei redis.conf hinzu, um Redis an eine einzelne Schnittstelle zu binden (es akzeptiert jedoch nicht nur Daten von dieser Netzwerkkarte).

bind 127.0.0.1

3. Fügen Sie ein längeres Passwort zu Redis hinzu (Sie müssen es sich nicht merken)

4 Die .conf-Konfiguration aktiviert die Authentifizierungsfunktion.

5. SSL-Proxy

6.

Redis-Konfiguration

daemonisieren Wenn Sie im Hintergrund ausgeführt werden müssen, ändern Sie dieses Element auf „Ja“

pidfile Konfigurieren Sie standardmäßig mehrere PID-Adressen in /var/run/redis.pid

binden Sie die Bindungs-IP, akzeptieren Sie nach dem Festlegen nur Anfragen von dieser IP

Port-Listening-Port, der Standardwert ist 6379

timeout Legen Sie das Timeout fest, wenn der Client eine Verbindung herstellt, in Sekunden

Loglevel ist in 4 Ebenen unterteilt: Debuggen, ausführlich, Hinweis, Warnung

Protokolldatei Konfigurieren Sie die Adresse der Protokolldatei

Datenbanken Legen Sie die Anzahl der Datenbanken fest. Die verwendete Standarddatenbank ist 0

Speichern Einrichten redis Häufigkeit der Datenbankspiegelung

rdbcompression Ob beim Durchführen einer Spiegelsicherung komprimiert werden soll

Dbfilename Dateiname der Spiegelsicherungsdatei

Dir Database Dateiplatzierungspfad für Spiegelsicherung

Slaveof Legen Sie die Datenbank als Slave-Datenbank anderer Datenbanken fest

Masterauth-Passwortüberprüfung für Master-Datenbankverbindung erforderlich

Requirepass Legen Sie das für die Anmeldung erforderliche Passwort fest

Maxclients Begrenzen Sie die Anzahl der gleichzeitig verbundenen Clients

Maxmemory Legen Sie den maximalen Speicher fest, den Redis verwenden kann

Appendonly Aktivieren Sie den Modus „Nur Anhängen“

Sie können Folgendes wissen:

Appendfsync Legen Sie die Häufigkeit der Synchronisierung von appendonly fest .aof-Dateien

vm-enabled Ob die Unterstützung für virtuellen Speicher aktiviert werden soll

vm-swap-file Legt den Auslagerungsdateipfad des virtuellen Speichers fest

vm-max-memory Legen Sie die von Redis verwendete maximale Größe des physischen Speichers fest.

vm-page-size Legen Sie die Seitengröße des virtuellen Speichers fest.

vm-pages Legen Sie die Gesamtgröße fest Seitennummer der Auslagerungsdatei

vm-max -threads Legt die Anzahl der Threads fest, die von VM IO gleichzeitig verwendet werden

Glueoutputbuf Kleine Ausgabepuffer zusammen speichern

hash- max-zipmap-entries Legen Sie den kritischen Wert des Hash fest.

Activerehashing Rehash

5 Datentypen: Zeichenfolge, Hash, verknüpfte Liste, Satz, geordneter Satz.

Unterstützt: Push/Pop, Hinzufügen/Entfernen, Schnittmenge, Vereinigung, Differenz und Sortieren.

redis3a1b071590ff3e300ce1bc60235ec52emysql

Gleichzeitig werden die Daten auf die Festplatte geschrieben. Damit die Daten sicher sind (außer bei plötzlichen Stromausfällen, wird beim Neustart des Dienstes in die Datei dump.rdb geschrieben)

select num#Wählen Sie die Bibliothek aus, der Standardwert ist 0 Bibliothek, insgesamt 16 Bibliotheken

auth liweijie#Passwort für autorisierte Benutzer erforderlich (das Passwort ist das in redis.conf konfigurierte Passwort)

flushdb#Löschen Sie die Datenbank.

String (String)-Typ:

set name lijie#Setze den Wert des Schlüsselnamens auf lijie

get name#Den Wert des Namens abrufen.

keys *#Alle Schlüssel abfragen.

setnx name liweijie#Wenn der Schlüssel bereits vorhanden ist, geben Sie 0 zurück und aktualisieren Sie ihn nicht, um ein Überschreiben zu verhindern.

setex Haarfarbe 10 rot #Der Wert der Set-Taste ist 10 Sekunden lang gültig.

setrange email 6 lampbre.com#Ersetzen Sie den Wert des Ersatzschlüssels durch lampbre.com ab dem 6. Zeichen

mset name1 Li Dawei name2 Li Xiaowei#Legen Sie die Werte mehrerer fest Schlüssel.

msetnxname1 Zhang San name3 Li Si# Bestimmen Sie, ob der Schlüssel existiert, legen Sie ihn fest, wenn er nicht existiert, andernfalls geben Sie 0 zurück, wenn er nicht gesetzt ist

mget name1 name2 name3#Erhalten Sie die Werte mehrerer Schlüssel gleichzeitig.

getset name1 Tom#Setzen Sie den Wert des Schlüssels zurück und geben Sie den alten Schlüsselwert zurück.

getrange email 6 18#Fangen Sie den Wert des E-Mail-Schlüssels aus den Zeichen zwischen dem 6. und 18. ab.

incr uid#jedes Mal um 1 erhöhen (wenn die UID im Schlüssel nicht existiert, setzen Sie sie und beginnen Sie bei 0, das Gleiche unten)

incrby uid 5#jedes Mal um 5 erhöhen Zeit

incrby uid -5#Jedes Mal um 5 verringern

decr uid #Jedes Mal um 1 verringern

decrby uid 5#Jedes Mal um 5 verringern

appendname1 @ 126.com#Fügen Sie die Zeichenfolge @126.com hinzu

strlenname1# zum Wert von name1#Gibt die Länge des Werts von Schlüsselname1 zurück.

Hashes (Hash) Typ:

hset user:001 name liweijie#Hash setzt den Namensschlüsselwert des Benutzers user:001 auf liweijie

hset user : 001 Alter 21#Fügen Sie auf ähnliche Weise einen Altersschlüsselwert von 21 hinzu

hsetnx user:001 Alter 22#Wie oben, aber prüfen Sie, ob der Schlüssel vorhanden ist. Erstellen Sie es, wenn es nicht vorhanden ist.

hmset user:002 name liweijie2 age 26 sex 1#Legen Sie die Werte mehrerer Schlüssel gleichzeitig fest.

hget user:001 name#Hash ruft den Wert des Namensschlüssels des Benutzers user:001 ab.

hget user:001 age #Wie oben.

hmget user:001 name age sex#Ruft die Werte mehrerer angegebener Schlüssel ab.

hgetall user:001#Erhalten Sie die Werte aller Schlüssel.

hincrbyuser:001 age -8#Füge den angegebenen Wert zum angegebenen Schlüssel hinzu.

hexists user:001 sex#Überprüfen Sie, ob der angegebene Schlüsselwert vorhanden ist.

hlen user:001#Gibt die Anzahl der Schlüssel/Felder des angegebenen Hashs zurück.

hdel user:001 sex#Löschen Sie das angegebene Feld oder den Schlüsselwert des angegebenen (user:001) Hashs.

hkeys user:003#Alle Felder oder Schlüsselwerte im Hash zurückgeben.

Typ und Vorgang der Listen (verknüpfte Liste) (Stapel oder Warteschlange):

lpush mylist "world"#String aus dem Kopf einfügen

lpush mylist "hello "# Wie oben

lrange mylist 0 -1#Get von 0 bis zum letzten, wie zum Beispiel [1) „Hallo“ 2) „Welt“]

rpush mylist „jiejie“ #Insert

linsert mylist before „hello“ „this is linsert“ #Geben Sie die Einfügeposition (insert before hello) am Ende an.

lset mylist 0 "what"#Legen Sie den Wert des angegebenen Index fest und ändern Sie ihn.

lrem mylist 1 "hello"#Löschen (1) ein Element mit dem Wert hallo. (n<0 wird aus dem Ende gelöscht, n=0 wird vollständig gelöscht)

ltrim mylist 1 2 #Behalten Sie die Elemente mit dem Index 1/2 in der Tabelle bei.

lpop mylist# Öffnen Sie das Anfangselement und kehren Sie zurück.

rpop mylist# Öffnen Sie das Schwanzelement und kehren Sie zurück.

rpoplpush mylist mylist2 #Pop vom Ende von mylist und fügt es in den Kopf von mylist2 ein.

lindex mylist 0#Erhalten Sie den Elementwert mit dem Tabellenindex 0.

llen mylist#Gibt die Anzahl der Tabellenelemente zurück (entspricht count($arr )).

Setzt (Set) Typ und Operation (Freundesempfehlung, Blog, Tag-Funktion):

smembers myset#Alle Elementwerte im Myset-Set anzeigen.

sadd myset "hello" #Fügen Sie einen Wert hello zur Mysets-Sammlung hinzu.

srem myset "hello" #Löschen Sie das Element mit dem Namen hello in der Myset-Sammlung.

spop myset #Zufälliges Popup und Zurückgeben eines Elements in mysets.

sdiff myset2 myset3#Gibt die Differenz zwischen myset2 und myset3 zurück (vorbehaltlich myset2).

sdiffstore myset4 myset2 myset3#Gibt die Differenz zwischen myset2 und myset3 zurück und speichert sie in myset4.

sinter myset2 myset3#Gibt den Schnittpunkt von myset2 und myset3 zurück.

sinterstore myset5 myset2 myset3#Gib den Schnittpunkt von myset2 und myset3 zurück und speichere ihn in myset5.

sunion myset2 myset3#Finden Sie die Union (Entfernen Sie Duplikate)

sunionstore myset6 myset2 myset3#Finden Sie die Union und speichern Sie sie in myset6.

smove myset2 myset3 "two" #Drei in myset2 nach myset3 verschieben.

scard myset2#Gibt die Anzahl der Elemente zurück.

sismember myset2 "one"# Bestimmen Sie, ob das Element eins Teil des myset2-Sets ist (entspricht is_array()).

srandmember myset2# Gibt zufällig ein Element in der myset2-Sammlung zurück, löscht es jedoch nicht (entspricht array_rand()).

Typ und Operation der sortierten Mengen (geordnete Menge) (sortiert nach Punktzahlen):

zadd myzset 1 "one"#Element eins zur Sequenz 1 hinzufügen

zadd myzset 2 " two"# Das Gleiche wie oben.

zadd myzset 3 "two"#Entspricht einem Wert mit einer Aktualisierungsreihenfolge von 2

zrange myzset 0 -1 withscores#Alle Elemente anzeigen und sortieren (Standard aufsteigende Reihenfolge).

zrem myzset "two"#Zwei löschen

zincrby myzset 2 "two"#Füge 2 zum Sequenzwert von zwei hinzu

zrank myzset "two"#Zurück zum set Der Index-Indexwert des Elements.

zrevrank myzset two#Kehrt das Element um und gibt den neuen Indexwert zurück.

zrevrange myzset 0 -1 withscores#Umgekehrte Reihenfolge (entspricht absteigender Reihenfolge)

zrangebyscore myzset 1 10 withscores#Elemente in der Reihenfolge 1-10 zurückgeben (kann paginiert werden).

zcount myzset 1 10 #Gibt die Anzahl der Elemente in der Reihenfolge zwischen 1 und 10 zurück.

zcard myzset#Gibt die Anzahl aller Elemente im Set zurück.

zremrangebyrank myzset 1 2#Elemente mit den Indizes 1 bis 2 im Set löschen.

zremrangebyscore myzset 1 10#Elemente von 1 bis 10 im Satz löschen.

Allgemeine Redis-Befehle

Schlüssel-/Wertbezogene Befehle.

keys * #Alle

keys user abfragen*#Den angegebenen

exists user:001# abfragen, um festzustellen, ob er existiert.

del name#Löschen Sie den angegebenen Schlüssel.

expire addr 10#设置过期时间

ttl addr#查询过期时间

select 0 #选择数据库

move age 1#将age移到1数据库。

get age #获取

persist age#移除age的过期时间。

randomkey#随机返回一个key

rename name1 name2#重命名键

type myset#返回键的类型。

ping #测试redis连接是否存活。

echo lamp#输出一个lamp

select 10#选择数据库。

quit/exit/crtl+C#退出客户端

dbsize#返回库里的键的个数。

服务器相关命令:

info#显示redis服务器的相关信息。

config get */loglevel #返回所有/指定的配置信息。

flushdb#删除当前库中的所有键/表。

flushall#删除所有数据库中的所有键/表

二、Redis高级部分: 

1、Redis安全性:  

1.用ACL控制器安全性。

2.给redis加上较长密码 

# requirepass foobared 

requirepass beijing 

3.在redis.conf配置启用认证功能。

方式一:Auth beijing

方式二:./redis-cli -a beijing

4.在redis.conf配置文件增加下面这一行配置,即可把redis绑定在单个接口上(但并不是只有接受这个网卡的数据)。

bind 127.0.0.1(单台机器的时候可以配置,分布式或主从复制时最好不要配置)

5.SSL代理

6.禁用指定命令。

2、Redis主从复制:  

redis只需在从服务器(slave)上配置即可:

slaveof 211.122.11.11 6379 #指定master 的ip 和端口 

masterauth beijing#这是master主机的密码 

Info#查看主/从服务器的状态。

3、Redis事务处理:  

Redis事务很不完善。

4、Redis持久化机制:  

方式一、备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式]

记录操作命令[ Append-only file(缩写aof)的方式]

备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式] 

save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000

方式二、记录操作命令[ Append-only file(缩写aof)的方式](较安全持久化) 

appendonly yes #启用aof 持久化方式 
# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化 
appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn