1. Einführung und Installation von Redis
1.1 Einführung in Redis
Redis (Remote Dictionary Server), d. h. ein Remote-Wörterbuchdienst, ist eine Open-Source-Lösung, die in der ANSI-C-Sprache geschrieben ist, das Netzwerk unterstützt, speicherbasierte oder persistente Protokolltypen sowie eine Schlüsselwertdatenbank sein kann und APIs in mehreren Sprachen bereitstellt. Seit dem 15. März 2010 wird die Entwicklung von Redis von VMware gehostet und seit Mai 2013 wird die Entwicklung von Redis von Pivotal gesponsert.
Was kann Redis tun?
- Speicherspeicher und Persistenz gehen beim Ausschalten verloren. Daher ist Persistenz sehr wichtig. Redis verwendet zwei Mechanismen (RDB und AOF).
- Hohe Effizienz, kann für hohe Geschwindigkeitseffizienz verwendet werden
- Veröffentlichungs-Abonnement-System
- Karteninformationsanalyse
- Zähler usw., Website-Aufrufe
Redis-Funktionen/Eigenschaften
- verschiedene Datentypen
- Beharrlichkeit
- Cluster
- Angelegenheiten usw.
1.2 Installieren Sie Redis in CentOS7
1.2.1 gcc installieren
gcc unter Linux ist ein leistungsstarker Multiplattform-Compiler mit überlegener Leistung, der von GNU eingeführt wurde. Der gcc-Compiler kann C- und C++-Sprachquellprogramme und Objektprogramme kompilieren und in ausführbare Dateien verknüpfen. gcc unter Linux ist ein leistungsstarker Multiplattform-Compiler mit überlegener Leistung, der von GNU eingeführt wurde. Der gcc-Compiler kann C- und C++-Sprachquellprogramme und Objektprogramme kompilieren und in ausführbare Dateien verknüpfen.Der gcc unter Linux ist ein leistungsstarker Multiplattform-Compiler mit überlegener Leistung, der von GNU eingeführt wurde . Der g cc- Compiler kann C , C konvertieren++ Sprachquellprogramm und Zielprogramm werden kompiliert und in ausführbare Dateien verknüpft.
Da Redis von der C++-Umgebung abhängt, müssen wir C++ installieren
yum install gcc-c++
Sie können die Version mit gcc -v überprüfen
gcc -v
Aktualisieren Sie die Version, da redis7.* die Unterstützung einer höheren Version von gcc erfordert, um 4 separat auszuführen
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils #修改使用版本
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
Überprüfen Sie weiterhin das Upgrade der gcc-Version auf 9.*, um die Installation abzuschließen
1.2.2 Laden Sie Redis herunter und installieren Sie es
Redis kann unter Windows und Linux installiert und verwendet werden, die Windows-Systemversion wurde jedoch vor langer Zeit gestoppt, sodass die Verwendung nicht empfohlen wird.
Offizielle Website https://redis.io/ Chinesische Website http://www.redis.cn/
Legen Sie die Installationsdatei über das Tool im Opt-Ordner ab:
Hinweis: Wenn es sich bei der Systemanwendung um Java handelt, installieren wir sie unter /usr/local. Wenn es sich um eine Anwendung auf Benutzerebene handelt, legen wir sie unter opt ab
Entpacken Sie den Ordner:
tar -zxvf redis-7.0.5 .tar.gz
Geben Sie nach der Dekomprimierung den Redis-Ordner ein, um die Datei anzuzeigen:
[root@lixp ~]# cd redis-7.0.5
[root@lixp redis-7.0.5]# ls
Kompilieren: Es hilft uns, die erforderliche Konfiguration zu konfigurieren
make #注意需要在解压后的redis文件夹中执行
这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要 调用perl或python来进行编译)。如果 在 make 过程中出现 error ,就要记下错误代码(注意不仅仅 是最后一行),然后可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址)。或者系统少了 一些依赖库等,这些需要自己仔细研究错误代码。make 的作用是开始进行源代码编译,以及一些功能 的提供,这些功能由他的 Makefile 设置文件提供相关的功能。比如 make install 一般表示进行安装, make uninstall 是卸载,不加参数就是默认的进行源代码编译。make 是 Linux 开发套件里面自动化 编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行 某些需要的程序进行编译的程序。
Redis installieren
make install
Dieser Befehl wird zum Installieren verwendet (natürlich müssen einige Softwareprogramme zuerst „make check“ oder „make test“ für einige Tests ausführen). Für diesen Schritt sind im Allgemeinen Root-Rechte erforderlich (da Sie Dateien auf das System schreiben müssen).
Befehlserweiterung – Softwareinstallationsprozess
1、解zhi包软件 tar zxf xxxx.tgz
2、配置 cd xxxx ./configure
3、编译 make
4、安装 make install
5、卸载 make uninstall
Überprüfen Sie, wo sich der Redis-Umgebungsdienst befindet
Test starten
redis-server
redis-server redis-config #后面是配置文件路径
1.2.3 Redis konfigurieren
vim-editor installieren
yum -y install vim
Sicherungskopie
Erstellen Sie einen Ordner auf derselben Ebene wie die Redis-Konfigurationsdatei und kopieren Sie eine redis.conf-Datei in den neuen Ordner. Wir werden diese CP-Datei in Zukunft für Vorgänge verwenden, und das Original wird sich nicht ändern.
#进入到redis目录下
[root@lixp redis-7.0.5]# cd /opt/redis-7.0.5
#复制一份redis.conf文件,防止源文件损坏,备份。
[root@lixp redis-7.0.5]# cp redis.conf ./redis0.conf
[root@lixp redis-7.0.5]# ll
Ändern Sie den Hintergrundstart
vim redis-conf
Starten Sie Redis neu und sehen Sie sich den Test an
[root@lixp redis-7.0.5]# redis-server /opt/redis-6.0.6/it-sunwz/redis.conf
Fortschritt anzeigen
ps -aux | grep redis
ps -ef | grep redis
Client-Verbindungstest
[root@lixp redis-7.0.5]# redis-cli -h 127.0.0.1 -p 6379
[root@lixp redis-7.0.5]# redis-cli -h 127.0.0.1 -p 6379 --raw #支持中文显示
Client-IO-Test
set name 张三
get name
keys *
Beenden Sie den Client und beenden Sie den Dienst
# 退出客户端
exit
# 结束服务方式1 客户端内直接输入
shutdown shutdown
# 结束服务方式2 客户端外直接输入命令
redis-cli shutdown
Erweiterung des Firewall-Befehls
启动防火墙:systemctl start firewalld
关闭防火墙:systemctl stop firewalld
检查防火墙状态:systemctl status firewalld
设置开机启用防火墙:systemctl enable firewalld.service
设置开机禁用防火墙:systemctl disable firewalld.service ·
关闭防火墙:systemctl stop firewalld
设置开机禁用防火墙:systemctl disable firewalld.service
1.2.4 Redis-Schalter
Der erste Typ: nach dem Beenden des Clients
[root@lixp redis-7.0.5]# redis-cli shutdown
Die zweite: direkt im Client (empfohlen)
127.0.0.1:6379>shutdown
1.3 Installation des Redis-Visualisierungstools
Installation und Verwendung von Redis Desktop Manager (Redis-Visualisierungstool).
Standardmäßig kann keine Verbindung hergestellt werden
Konfigurieren Sie die Firewall so, dass Ports geöffnet werden
firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --remove-port=8888/tcp --permanent
firewall-cmd --list-ports
Der Redis-Dienst verfügt standardmäßig über einen Schutzmechanismus. Die Standardmechanismusregel besagt, dass nur der Computer, auf dem der Redis-Dienst aktuell installiert ist, auf 127.0.0.1 zugreifen darf
Standardmäßig hat Redis in der Konfigurationsdatei eine IP-Adresse, die an 127.0.0.1 gebunden ist. Wir müssen diese Adresse auskommentieren, um den Fernzugriff zu unterstützen.
Starten Sie den Redis-Dienst neu
1.4 Erste Schritte mit Redis
1.4.1 Informationen zum Redis-Thread-Problem
Redis ist Single-Threaded. Warum ist Single-Threaded so schnell?
Die Datenstruktur von Redis besteht nicht nur aus einfachen Schlüsselwerten, sondern auch aus komplexen Strukturen wie Listen und Hashes. Diese Strukturen können sehr feinkörnige Operationen ausführen, z. B. das Hinzufügen eines Elements am Ende einer langen Liste oder das Hinzufügen oder Entfernen eines Objekts in einem Hash. Diese Vorgänge erfordern möglicherweise viele Sperren, was zu einem stark erhöhten Synchronisierungsaufwand führt. Kurz gesagt, im Fall eines einzelnen Threads ist der Code klarer, die Verarbeitungslogik einfacher, es besteht keine Notwendigkeit, verschiedene Sperren zu berücksichtigen, es gibt keinen Sperrfreigabevorgang und es gibt keinen Leistungsverbrauch aufgrund möglicher Deadlocks Es gibt keine Mehrfachsperren. Das durch Prozesse oder Multithreading verursachte Umschalten verbraucht CPU. Single-Thread-Multiprozess-Clusterlösung Die Leistung eines einzelnen Threads ist tatsächlich sehr leistungsstark und die Effizienz pro Kern ist ebenfalls sehr hoch. Multi-Threading kann natürlich eine höhere Leistungsgrenze haben als Single-Threading, aber in der heutigen Computerumgebung kann selbst die Obergrenze von Single-Machine-Multi-Threading oft nicht die Anforderungen erfüllen. Was weiter untersucht werden muss, ist die Lösung von Multi-Threading. Server-Clustering. Die Multithreading-Technologie im Plan ist noch nicht verfügbar. Daher ist ein Single-Threaded-Multiprozess-Cluster eine modische Lösung. Der CPU-Verbrauch erfolgt im Single-Thread-Modus, wodurch unnötige Kontextwechsel und Race-Bedingungen vermieden werden und keine CPU durch Umschalten aufgrund von Multiprozessen oder Multi-Threading verbraucht wird. Was aber, wenn die CPU zum Flaschenhals von Redis wird oder Sie die anderen CPU-Kerne des Servers nicht im Leerlauf lassen möchten? Es können mehrere Redis-Prozesse in Betracht gezogen werden. Redis ist eine Schlüsselwertdatenbank, keine relationale Datenbank, und es gibt keine Einschränkungen zwischen den Daten. Solange der Client unterscheiden kann, welche Schlüssel in welchem Redis-Prozess platziert sind.
1.4.3 Redis-Grundbefehle
Datenbankwechselvorgang
127.0.0.1:6379> PING #检查连接
PONG
127.0.0.1:6379> SELECT 15
OK
127.0.0.1:6379[15]> SELECT 16 #一共16个库 0-15
(error) ERR DB index is out of range
127.0.0.1:6379[15]> SELECT 0 #默认是0 不显示索引
OK
127.0.0.1:6379>
Aktuelle Datenbank anzeigen
127.0.0.1:6379> SET student zhangsan #增加一个数据
OK
127.0.0.1:6379> SET student lisi #相同key增加一个数据 会覆盖掉
OK
127.0.0.1:6379> GET student # 取值
"lisi"
127.0.0.1:6379> KEYS * # 查看所有的key
1) "list11"
2) "student"
3) "user:1:age"
4) "user:1:name"
127.0.0.1:6379>
Löschen Sie die Daten in der Datenbank
Flushdb löscht die aktuelle Datenbank – Voraussetzung ist die Eingabe der aktuellen Datenbank
Flushall entfernt alle Bibliotheken
127.0.0.1:6379> SET student zhangsan #在索引0库加信息
OK
127.0.0.1:6379> SET teacher lisi #在索引0库加信息
OK
127.0.0.1:6379> select 5 #切换索引为5的库
OK
127.0.0.1:6379[5]> SET user wangwu #在索引5库加信息
OK
127.0.0.1:6379[5]> KEYS *
1) "user"
127.0.0.1:6379[5]> FLUSHDB #清除当前库
OK
127.0.0.1:6379[5]> keys *
(empty array)
127.0.0.1:6379[5]> SELECT 0
OK
127.0.0.1:6379> KEYS *
4.2.4 设置过期时间
4.2.5 查看key类型
4.2.5 查看key是否存在
5. redis数据类型
redis存在5种基本数据类型和三种特殊类型
1) "teacher"
2) "student"
127.0.0.1:6379> SELECT 5
OK
127.0.0.1:6379[5]> FLUSHALL #清空所有的库信息
OK
127.0.0.1:6379[5]> SELECT 0
OK
127.0.0.1:6379> KEYS *
(empty array)
127.0.0.1:6379>
Ablaufzeit festlegen
127.0.0.1:6379> set student jiazong
OK
127.0.0.1:6379> EXPIRE student 30 #设置过期 秒数
(integer) 1
127.0.0.1:6379> TTL student
(integer) 18
127.0.0.1:6379> TTL student
(integer) 16
127.0.0.1:6379> TTL student #查看过期时间
(integer) 14
127.0.0.1:6379> TTL student
(integer) 7
127.0.0.1:6379> TTL student
(integer) -2
127.0.0.1:6379> get student
(nil)
127.0.0.1:6379>
Schlüsseltyp anzeigen
type key
Überprüfen Sie, ob der Schlüssel vorhanden ist
EXISTS key
(Ganzzahl) 1
127.0.0.1:6379> TTL-Student
(Ganzzahl) 18
127.0.0.1:6379> TTL-Student
(Ganzzahl) 16
127.0.0.1:6379> TTL-Student #查看过期时间
(Ganzzahl) 14
127.0.0.1:6379 > TTL-Student
(Ganzzahl) 7
127.0.0.1:6379> TTL-Student
(Ganzzahl) -2
127.0.0.1:6379> Student
(nil)
127.0.0.1:6379> abrufen
查看key类型
```shell
type key
Überprüfen Sie, ob der Schlüssel vorhanden ist
EXISTS key