Inhaltsverzeichnis
1. Redis-Installation und -Start
3. Redis-Befehl (Hervorhebung)
4. Die grundlegende Verwendung (Verständnis) von Jedis entspricht JDBC
5. Spring Data Redis (Hervorhebung *****)
Manipulieren Sie Hash-Typ-Daten
Manipulieren von Listentypdaten
Vorgangserfassungstypdaten (erweitert)
Bestellte Erfassungstypdaten verarbeiten (erweitert)
Allgemeine Bedienung (muss gemeistert werden)
1. Grundbegriffe:
1. Redis-Einführung:
Redis ist eine Datenbank , die auf Speicherschlüssel = Wertstruktur basiert
Portnummer: 6379
2. Hauptmerkmale:
1. Speicher, hohe Lese- und Schreibleistung – Redis-Lesegeschwindigkeit beträgt 110.000 Mal/s
2. Es speichert umfangreiche Arten von Werten (5 Datentypen), auch bekannt als strukturierte NoSQL
Datenbank
3. Geeignet zum Speichern von Daten, die heiß sind und sich nicht ständig ändern (Waren, Informationen, Nachrichten)
3. Einführung in NoSQL
NoSQL (Not Only SQL) ist nicht nur SQL, bezieht sich im Allgemeinen auf == nicht relationale Datenbank ==
Relationale Datenbank (Mysql, Oracle usw.)
Vorteil:
1. Einfache Wartung: Alle verwenden eine Tabellenstruktur und ein einheitliches Format
2. Einfach zu bedienen: Die SQL-Sprache ist universell
3. Mehrtabellenabfrage: kann für sehr komplexe Abfragen zwischen einer Tabelle oder mehreren Tabellen verwendet werden
Mangel:
1. Auf der Festplatte gespeichert, daher ist die Lese- und Schreibfähigkeit relativ schlecht
2. Feste Tabellenstruktur, schlechte Flexibilität
3. Hohe gleichzeitige Lese- und Schreibanforderungen, Festplatten-E/A ist ein großer Engpass
Nicht-relationale Datenbanken (redis, MongoDB etc.)
Vorteil:
1. Flexibles Format: Das Format der gespeicherten Daten kann Schlüssel, Wert und andere Anwendungsszenarien sein.
2. Schnelle Geschwindigkeit: nosql kann anstelle der Festplatte Festplatte oder Speicher als Träger verwenden;
3. Niedrige Kosten: Die Bereitstellung der nosql-Datenbank ist einfach und im Grunde kostenlos;
Mangel:
1. Es bietet keine SQL-Unterstützung, und die Kosten für das Erlernen und Verwenden sind relativ hoch.
2. Generell keine Transaktionsabwicklung
3. Fehlen einer komplexen Abfrage
1. Redis-Installation und -Start
herunterladen
Adresse der offiziellen Website von Reids: Redis
Adresse der chinesischen Website: Redis chinesische Website
Verzeichnisaufbau
Verzeichnis oder Datei | Wirkung |
---|---|
Redis-Benchmark | Leistungstest-Tools |
redis-check-aof | AOF-Datei-Reparatur-Tool |
redis-check-dump | Tool zur Überprüfung von RDB-Dateien (snapshot persistente Datei) |
redis-cli | Befehlszeilen-Client |
Redis-Server | Starten Sie den Redis-Server |
redis.windows.conf | redis Core-Konfigurationsdatei |
Starten Sie den Dienst:
Starten Sie die Kommandozeile:
3. Redis-Befehl (Hervorhebung)
Redis-Datenstruktur
Redis verwendet die Speicherung von Schlüssel-Wert-Paaren. Der Schlüsseltyp (Schlüssel) kann nur eine Zeichenfolge sein, und der Wert (Wert) unterstützt fünf Datentypen:
Zeichenfolge: Zeichenfolge
Hash: HashMap
Doppelt verkettete Liste: LinkedList
Ungeordnete Sammlung: HashSet
Bestellte Sammlung: LinkedHashSet
1.String Saite (Betonung)
Der String-Typ ist der grundlegendste Datenspeichertyp in Redis
* Set-Key-Wert hinzugefügt. * Get-Key
abfragen* Entf-Taste löschen
* Setzen Sie die Ablaufzeit beim Hinzufügen (Bestätigungscode) setex key Sekundenwert
* Überprüfen Sie die verbleibende Zeit ttl key
* Bestimmen Sie, ob der Datensatz gemäß dem Schlüssel existiert Schlüssel 0: existiert nicht 1: existiert
2. Hash-Hash (Hervorhebung)
Der Hash-Typ ist dem Map in Java sehr ähnlich, wo eine Gruppe von Schlüssel-Wert-Paaren im Wert gespeichert werden kann
Dieser Typ eignet sich sehr gut zum Speichern von Informationen über Objekte in Java
* hset key hkey hvalue hinzufügen
* alle hgetall key
hget key hkey abfragen * Delete
Lösche einen Schlüssel mit einem einzelnen Wert hdel key hkey
delete redis key del key
* hole all hkey hkeys key
* hole all hvalue hvals key
* Wert
der linken Push- lpush-Taste hinzufügen Rechter Push- rpush-Tastenwert * Listenlänge llen-Taste * Abfrageelement lrange-Taste [Startindex-Endindex] 0 -1
* Element löschen linke
Popup- Taste lpop rechte Popup-Taste rpop
3.Set-Sammlung
Die unterste Schicht des Set-Typs ist eine Hash-Tabelle. Die Elemente darin sind ungeordnet und nicht wiederholbar
* Sadd-Schlüsselwert hinzufügen
* Anzahl der Sammlungen abfragen
scard-Schlüssel
* Element
smembers-Schlüssel
abfragen * Element
srem-Schlüsselwert löschen
4. ZSet-Sammlung
Zset, auch bekannt als sortedSet, fügt auf Basis von Set eine geordnete Funktion hinzu, bei der beim Hinzufügen von Elementen eine Punktzahl angegeben werden darf und nach dieser Punktzahl sortiert wird.
* zadd key score value hinzugefügt
* Abfrage
aufsteigender
zrange key [start index end index] [withscores]
absteigender
zrevrange key [start index end index] [withscores]
* zrem-Schlüsselwert löschen
gemeinsames Kommando
* Fuzzy-Abfrage Schlüssel
Schlüssel ** Taste löschen
Taste löschen ....* Bestimmen Sie den Werttyptypschlüssel
gemäß dem Schlüssel* Wählen Sie die Datenbank aus,
wählen Sie 0~15* Löschen Sie die aktuelle Datenbank
flushdb* Alle Datenbanken
leeren
4. Die grundlegende Verwendung (Verständnis) von Jedis entspricht JDBC
Redis existiert als ausgezeichneter Cache-Server. Die meisten Sprachen bieten Treiberpakete für die Verbindung zu Redis. In Java sind Jedis und Redisson die bekannteren. Heute nehmen wir Jedis als Beispiel, um zu lernen, wie man Programme verwendet, um Redis zu betreiben.
Jedis-API
Methode | erklären |
---|---|
neue Jedis (Host, Port) | Erstellen Sie ein Jedis-Objekt, der Parameter host ist die Adresse des Redis-Servers und der Parameter Port ist der Port des Redis-Dienstes |
set(schlüssel,wert) | Legen Sie Daten vom Typ String fest |
holen (Schlüssel) | Rufen Sie Daten vom Typ Zeichenfolge ab |
hset(Schlüssel,Feld,Wert) | Stellen Sie die Daten des Hash-Typs ein |
hget(Schlüssel,Feld) | Holen Sie sich Daten vom Hash-Typ |
lpush(Schlüssel,Werte) | Setzen Sie Daten vom Listentyp |
lpop(schlüssel) | Pop den Stapel auf der linken Seite der Liste |
rpop(Schlüssel) | Platzieren Sie den Stapel auf der rechten Seite der Liste |
Entf (Taste) | den angegebenen Schlüssel löschen |
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.3</version>
</dependency>
</dependencies>
public static void main(String[] args) {
// 1.创建连接
Jedis jedis = new Jedis("127.0.0.1", 6379);
// 2.新增
jedis.set("1002", "李四");
//3.查询
String value = jedis.get("1002");
System.out.println(value);
// 4.关闭连接
jedis.close();
}
Jedis-Verbindungspool
public static void main(String[] args) {
// 0.创建连接池配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50); // 最大连接数
config.setMaxIdle(20); // 最大空闲数
// 1.创建连接池
JedisPool jedisPool = new JedisPool(config,"127.0.0.1",6379);
// 2.获取连接
Jedis jedis = jedisPool.getResource();
// 3.进行 新增、修改、删除、查询
// 4.归还连接
jedis.close();
}
5. Spring Data Redis (Hervorhebung *****)
einführen:
Spring Data Redis bietet einfache Konfiguration und Zugriff auf Redis aus Spring-Anwendungen
Durch RedisTemplate
die hochgradige Kapselung der zugrunde liegenden Jedis bietet es verschiedene Redis-Operationen
-
ValueOperations: einfache Schlüssel-Wert-Paar-Operation String
-
SetOperations: Set-Typ-Datenoperationssatz
-
ZSetOperations: Datenoperation vom Typ zset sortedset---->zset
-
HashOperations: Hash für Datenoperationen vom Typ Hash
-
ListOperations: Liste für Daten vom Listentyp bearbeiten
Umgebung bauen
1. Abhängigkeit
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
</parent>
<dependencies>
<!-- SpringDataRedis框架-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- spring测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2. Konfigurationsdatei
spring:
redis:
host: localhost
port: 6379
database: 0 # 操作的是0号数据库
jedis: #Redis连接池配置
pool:
max-active: 8 #最大连接数
max-wait: 1ms #连接池最大阻塞等待时间
max-idle: 4 #连接池中的最大空闲连接
min-idle: 0 #连接池中的最小空闲连接
3.API
@Autowired
private RedisTemplate redisTemplate;//二进制(能取,在可视化工具中看不到数据)
@Autowired
private StringRedisTemplate stringRedisTemplate;//RedisTemplate 的子类
3.1 Betriebswert
// 操作字符串类型
@Test
public void test01() throws Exception {
// 获取string操作对象
ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
// 存值
opsForValue.set("city", "北京");
// 取值
String value = opsForValue.get("city");
System.out.println(value);
// 存验证码存活5分钟
opsForValue.set("sms_13700137000", "6375",TimeUnit.SECONDS);
//删除
redisTemplate.delete("city");
}
Manipulieren Sie Hash-Typ-Daten
// 操作hash类型
@Test
public void test02() throws Exception {
// 获取hash操作对象
HashOperations<String, Object, Object> opsForHash = stringRedisTemplate.opsForHash();
// 存值
//opsForHash.put("1005", "nage", "zhangsan");
//opsForHash.put("1005", "age", "18");
//opsForHash.put("1005", "sex", "man");
// 取出年龄
String age = (String) opsForHash.get("1005", "age");
System.out.println(age);
System.out.println("---------------");
// 取出所有key
Set<Object> keys = opsForHash.keys("1005");
for (Object key : keys) {
System.out.println(key);
if("sex".equals(key)){
ops.delete("1005",key); //删除map中的key
}
}
System.out.println("---------------");
// 取出所有value
List<Object> values = opsForHash.values("1005");
for (Object value : values) {
System.out.println(value);
}
// 删除
stringRedisTemplate.delete("1005");
}
Manipulieren von Listentypdaten
// 操作list类型
@Test
public void test03() throws Exception {
// 获取list操作对象
ListOperations<String, String> opsForList = stringRedisTemplate.opsForList();
// 存值
//opsForList.leftPush("alist", "a");
//opsForList.leftPush("alist", "b");
opsForList.leftPushAll("alist", "a", "b");
opsForList.rightPush("alist", "c");
// 取值
List<String> list = opsForList.range("alist", 0, -1);
for (String s : list) {
System.out.println(s);
}
System.out.println("--------------");
// 获取list长度
Long size = opsForList.size("alist");
System.out.println(size);
System.out.println("--------------");
// 遍历删除
for (Long i = 0l; i < size; i++) {
// 弹出
System.out.println(opsForList.rightPop("alist"));
}
}
Vorgangserfassungstypdaten (erweitert)
// 操作set类型
@Test
public void test04() throws Exception {
// 获取set操作对象
SetOperations<String, String> opsForSet = stringRedisTemplate.opsForSet();
// 存值
// opsForSet.add("lol", "a", "b", "c", "a");
// 获取
Set<String> lol = opsForSet.members("lol");
for (String s : lol) {
System.out.println(s);
}
// 删除
opsForSet.remove("lol", "a");
}
Bestellte Erfassungstypdaten verarbeiten (erweitert)
// 操作zset类型
@Test
public void test05() throws Exception {
// 获取 zset操作对象
ZSetOperations<String, String> opsForZSet = stringRedisTemplate.opsForZSet();
// 存值
// opsForZSet.add("wangzhe", "安其拉", 66.6);
// opsForZSet.add("wangzhe", "兰陵王", 68.6);
// opsForZSet.add("wangzhe", "后羿", 79.6);
// 修改
// opsForZSet.add("wangzhe", "安其拉", 85.6);
// 删除
opsForZSet.remove("wangzhe", "兰陵王");
// 取值
Set<String> wangzhe = opsForZSet.reverseRange("wangzhe", 0, -1);
for (String s : wangzhe) {
System.out.println(s);
}
}
Allgemeine Bedienung (muss gemeistert werden)
// 通用操作
@Test
public void test06()throws Exception{
// 查询所有key
Set<String> keys = stringRedisTemplate.keys("*");
for (String key : keys) {
System.out.println(key);
}
// 判断某个key是否存在
Boolean itheima = stringRedisTemplate.hasKey("1005");
System.out.println(itheima);
// 判断某个key的类型
DataType type = stringRedisTemplate.type("1005");
System.out.println(type.name());
}