Grundlegende Verwendung von Redis!

Inhaltsverzeichnis

1. Grundbegriffe:

1. Redis-Installation und -Start

herunterladen

Verzeichnisaufbau

3. Redis-Befehl (Hervorhebung)

Redis-Datenstruktur

 1.String Saite (Betonung)

2. Hash-Hash (Hervorhebung)

 3.Set-Sammlung

 4. ZSet-Sammlung

gemeinsames Kommando

4. Die grundlegende Verwendung (Verständnis) von Jedis entspricht JDBC

Jedis-API

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 NoSQLDatenbank

        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

 

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 RedisTemplatedie 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());
}

Ich denke du magst

Origin blog.csdn.net/weixin_50769390/article/details/127134134
Empfohlen
Rangfolge