Heim Datenbank Redis Was ist der Unterschied zwischen Redis und Jedis?

Was ist der Unterschied zwischen Redis und Jedis?

Jun 29, 2019 pm 05:10 PM

Was ist der Unterschied zwischen Redis und Jedis?

Die Integration von Redis und Spring ist im Allgemeinen in Spring-Data-Redis-Integration und Jedis-Integration unterteilt.

1 Referenzabhängigkeiten sind unterschiedlich:

Die von spring-data-redis verwendeten Abhängigkeiten sind wie folgt:

<dependency>  
      <groupId>org.springframework.data</groupId>  
      <artifactId>spring-data-redis</artifactId>  
      <version>1.8.9.RELEASE</version>  
</dependency>
Nach dem Login kopieren

Die von jedis verwendeten Abhängigkeiten sind wie folgt:

<dependency>
       <groupId>redis.clients</groupId>
       <artifactId>jedis</artifactId>
       <version>2.9.0</version>
       <type>jar</type>
       <scope>compile</scope>
</dependency>
Nach dem Login kopieren

2 in der Art und Weise, Jedis-Instanzen zu verwalten und Redis-Dienste zu betreiben:

spring-data-redis:

Es wird also über org.springframework.data.redis.connection.jedis.JedisConnectionFactory verwaltet Durch die Verwaltung der Factory-Klasse und dann durch die konfigurierte Template-Bean zum Betreiben des Redis-Dienstes wird das Codesegment mit einer großen Anzahl von Template-Fragmentcodes gefüllt, die nichts mit dem Geschäft zu tun haben. Der Code ist redundant und schwer zu warten. Zum Beispiel der folgende Code:

protected RedisTemplate<Serializable, Serializable> redisTemplate;
 
public void saveUser(User user) {
    redisTemplate.execute(new RedisCallback<Object>() {
 
 
        @Override
        public Object doInRedis(RedisConnection connection) throws DataAccessException {
            connection.set(redisTemplate.getStringSerializer().serialize("user.uid." + user.getId()),
                           redisTemplate.getStringSerializer().serialize(user.getName()));
            return null;
        }
    });
}
 
 
public User getUser(long id) {
    return redisTemplate.execute(new RedisCallback<User>() {
        @Override
        public User doInRedis(RedisConnection connection) throws DataAccessException {
            byte[] key = redisTemplate.getStringSerializer().serialize("user.uid." + id);
            if (connection.exists(key)) {
                byte[] value = connection.get(key);
                String name = redisTemplate.getStringSerializer().deserialize(value);
                User user = new User();
                user.setName(name);
                user.setId(id);
                return user;
            }
            return null;
        }
    });
}
Nach dem Login kopieren

Einführung in RedisTemplate

Spring kapselt das RedisTemplate-Objekt zum Vergleich. Verschiedene Vorgänge von Redis, es unterstützt alle nativen Redis-APIs. RedisTemplate bietet die Verwendung mehrerer häufig verwendeter Schnittstellenmethoden, nämlich:

private ValueOperations private SetOperations zSetOps;

RedisTemplate definiert fünf Datenstrukturoperationen

redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set
StringRedisTemplate与RedisTemplate
Nach dem Login kopieren

Die Beziehung zwischen den beiden besteht darin, dass StringRedisTemplate RedisTemplate erbt.
Die Daten zwischen den beiden sind nicht identisch. Das heißt, StringRedisTemplate kann nur die Daten in StringRedisTemplate verwalten, und RedisTemplate kann nur die Daten in RedisTemplate verwalten.
SDR verwendet standardmäßig zwei Serialisierungsstrategien: eine ist die Serialisierungsstrategie von String und die andere ist die Serialisierungsstrategie von JDK.
StringRedisTemplate verwendet standardmäßig die String-Serialisierungsstrategie, und die gespeicherten Schlüssel und Werte werden mit dieser Strategie serialisiert und gespeichert.

RedisTemplate verwendet standardmäßig die JDK-Serialisierungsstrategie, und die gespeicherten Schlüssel und Werte werden mit dieser Strategie serialisiert und gespeichert.

Jedis-Methode:

Verwaltet über redis.clients.jedis.JedisPool, dh über den Pool verwaltet, die Jedis-Instanz über das Poolobjekt abgerufen und dann den Redis-Dienst direkt betrieben die jedis-Instanz, wodurch redundanter Code eliminiert wird, der nichts mit dem Geschäft zu tun hat, wie zum Beispiel das folgende Code-Snippet:

private JedisPool jedisPool;
public String save(String key,String val) {
Jedis jedis = jedisPool.getResource();
return jedis.set(key, val);
}
Nach dem Login kopieren

Der Wechsel von der Factory-Klasse zum Pool entspricht der Änderung in der Verbindung von mybatis mit MySQL wird einfacher und leichter zu warten. Jedis verwendet Apache Commons-Pool2, um den Jedis-Ressourcenpool zu verwalten. Daher ist der Ressourcenpool GenericObjectPoolConfig ein sehr wichtiger Parameter, der viele Parameter für die Ressourcenverwaltung und -nutzung enthält.

Parameterbeschreibung

JedisPool stellt sicher, dass die Ressourcen innerhalb eines kontrollierbaren Bereichs liegen und sorgt für Thread-Sicherheit, aber eine angemessene GenericObjectPoolConfig-Konfiguration kann Anwendungen mit Redis schützen. Hier werden einige seiner wichtigen Parameter erläutert vorgeschlagen:

In der aktuellen Umgebung sind Jedis-Verbindungen Ressourcen und JedisPool verwaltet Jedis-Verbindungen.

1. Ressourceneinstellungen und -nutzung

maxTotal: die maximale Anzahl von Verbindungen im Ressourcenpool; Standardwert: 8 Siehe den nächsten Abschnitt für Einstellungsempfehlungen
maxIdle: die maximale Anzahl von Vom Ressourcenpool zugelassene Leerlaufverbindungen; Standardwert: 8; Nutzungsempfehlungen: Siehe nächster Abschnitt.
minIdle: Der Ressourcenpool stellt die Mindestanzahl an Leerlaufverbindungen sicher Abschnitt für Einstellungsempfehlungen
blockWhenExhausted: Wenn der Ressourcenpool erschöpft ist. Danach, ob der Anrufer warten möchte. Nur wenn „true“ gilt, wird der folgende maxWaitMillis wirksam; 1: Gibt an, dass es nie zu einer Zeitüberschreitung kommt. Nutzungsempfehlungen: Es wird nicht empfohlen, den Standardwert zu verwenden.
testOnBorrow: Ob beim Ausleihen einer Verbindung aus dem Ressourcenpool eine Verbindungsgültigkeitserkennung (Ping) durchgeführt werden soll. Standardwert: false; Nutzungsempfehlungen: Wenn das Geschäftsvolumen groß ist, wird empfohlen, es auf false zu setzen (die Kosten für einen weiteren Ping).
testOnReturn: Gibt an, ob beim Zurückgeben der Verbindung zum Ressourcenpool eine Verbindungsgültigkeitserkennung (Ping) durchgeführt werden soll. Standardwert: false. Verwendungsempfehlungen: Wenn das Geschäftsvolumen groß ist, wird empfohlen, dies festzulegen auf false (ein weiterer Ping-Overhead).
jmxEnabled: Ob die JMX-Überwachung aktiviert werden soll, die für die Überwachung verwendet werden kann; Verwendungsempfehlungen: Es wird empfohlen, sie zu aktivieren, aber die Anwendung selbst muss auch aktiviert sein

2 Ressourcenüberwachung

Die Erkennung von Leerlauf-Jedis-Objekten wird durch eine Kombination der folgenden vier Parameter abgeschlossen: testWhileIdle ist der Schalter dieser Funktion.

testWhileIdle: Ob die Überwachung inaktiver Ressourcen aktiviert werden soll; Standardwert: false; Verwendungsvorschläge: true
timeBetweenEvictionRunsMillis: Erkennungszeitraum von inaktiven Ressourcen (in Millisekunden); , wählen Sie den Zeitraum selbst aus, Sie können auch die Standardeinstellung verwenden oder die Konfiguration in JedisPoolConfig unten verwenden
minEvictableIdleTimeMillis: die minimale Leerlaufzeit der Ressourcen im Ressourcenpool (Einheit: Millisekunden), nach Erreichen dieses Werts die inaktiven Ressourcen wird entfernt; Standardwert: 1000 60 30 = 30 Minuten; Verwendungsvorschläge: Sie können je nach Ihrem Unternehmen entscheiden, die meisten Standardwerte reichen aus, Sie können auch die Konfiguration in JeidsPoolConfig unten verwenden
numTestsPerEvictionRun : die Anzahl der Stichproben pro Zeit beim Erkennen inaktiver Ressourcen; Standardwert: 3; Verwendungsvorschläge: Sie können eine Feinabstimmung entsprechend der Anzahl der Verbindungen in Ihrer eigenen Anwendung vornehmen. Bei Einstellung auf -1 werden alle Verbindungen im Leerlauf überwacht >

Weitere Informationen zu Redis finden Sie in der Rubrik

Tutorial zur Redis-Nutzung!

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Redis und Jedis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie implementiere ich Authentifizierung und Autorisierung in Redis? Wie implementiere ich Authentifizierung und Autorisierung in Redis? Mar 17, 2025 pm 06:57 PM

In dem Artikel wird die Implementierung der Authentifizierung und Autorisierung in Redis erläutert, wobei der Schwerpunkt auf der Aktivierung der Authentifizierung, der Verwendung von ACLs und den Best Practices zur Sicherung von Redis wird. Es deckt auch die Verwaltung von Benutzerberechtigungen und Tools ab, um die Redis -Sicherheit zu verbessern.

Wie wähle ich einen Shard -Schlüssel in Redis -Cluster aus? Wie wähle ich einen Shard -Schlüssel in Redis -Cluster aus? Mar 17, 2025 pm 06:55 PM

In dem Artikel wird die Auswahl von Shard -Schlüssel im Redis -Cluster erläutert und ihre Auswirkungen auf Leistung, Skalierbarkeit und Datenverteilung betont. Zu den wichtigsten Problemen gehört die Gewährleistung der sogar Datenverteilung, die Ausrichtung auf den Zugriffsmustern und die Vermeidung häufiger Fehler L.

Wie implementiere ich Cache -Invalidierungsstrategien in Redis? Wie implementiere ich Cache -Invalidierungsstrategien in Redis? Mar 17, 2025 pm 06:46 PM

In dem Artikel werden Strategien zur Implementierung und Verwaltung von Cache-Invalidierung in REDIS erörtert, einschließlich zeitbasierter Ablauf, ereignisgesteuerter Methoden und Versioning. Es deckt auch Best Practices für Cache -Ablauf und Tools zur Überwachung und Automatik ab

Wie verwende ich Redis für Jobwarteschlangen und Hintergrundverarbeitung? Wie verwende ich Redis für Jobwarteschlangen und Hintergrundverarbeitung? Mar 17, 2025 pm 06:51 PM

In dem Artikel wird die Verwendung von REDIS für Jobwarteschlangen und Hintergrundverarbeitung, Einzelheiten zur Einrichtung, Jobdefinition und Ausführung erläutert. Es deckt Best Practices wie Atomoperationen und Jobpriorisierung ab und erklärt, wie Redis die Verarbeitungseffizienz verbessert.

Wie benutze ich Redis für Pub/Sub Messaging? Wie benutze ich Redis für Pub/Sub Messaging? Mar 17, 2025 pm 06:48 PM

In dem Artikel wird erläutert, wie Redis für Pub/Sub -Messaging, Abdeckung von Setup, Best Practices, Sicherstellung der Nachrichtenzuverlässigkeit und Überwachungsleistung.

Wie überwachte ich die Leistung eines Redis -Clusters? Wie überwachte ich die Leistung eines Redis -Clusters? Mar 17, 2025 pm 06:56 PM

In Artikel werden die Leistung und Gesundheit von Redis-Cluster mithilfe von Tools wie Redis CLI, Redis Insight und Drittanbieterlösungen wie Datadog und Prometheus überwacht.

Wie verwende ich Redis für das Sitzungsmanagement in Webanwendungen? Wie verwende ich Redis für das Sitzungsmanagement in Webanwendungen? Mar 17, 2025 pm 06:47 PM

In dem Artikel wird die Verwendung von Redis für das Sitzungsmanagement in Webanwendungen, die Einrichtung, Vorteile wie Skalierbarkeit und Leistung sowie Sicherheitsmaßnahmen erläutert.

Wie sichere ich Redis gegen gemeinsame Schwachstellen? Wie sichere ich Redis gegen gemeinsame Schwachstellen? Mar 17, 2025 pm 06:57 PM

In Artikel wird die Sicherung von Redis gegen Schwachstellen erörtert, die sich auf starke Kennwörter, Netzwerkbindung, Befehlsbehinderung, Authentifizierung, Verschlüsselung, Aktualisierungen und Überwachung konzentrieren.

See all articles