


Explication détaillée d'exemples de cluster Redis fonctionnant avec Java
Pour plus d'informations sur la construction de cluster Redis, veuillez vous référer à mon autre article Construction de cluster Redis et utilisation simple
Qu'est-ce que Redis et que peut-il faire
Redis est un serveur de structure de données en mémoire open source (sous licence BSD) qui peut être utilisé comme courtier de base de données, de cache et de file d'attente de messages. Il prend en charge les chaînes, les tables de hachage, les listes, les ensembles, les ensembles ordonnés, les bitmaps, les hyperloglogs et d'autres types de données. Réplication intégrée, scripts Lua, expulsion LRU, transactions et différents niveaux de fonctions de persistance du disque, tout en offrant une haute disponibilité via Redis Sentinel et un partitionnement automatique via Redis Cluster. (Extrait du site officiel de Redis)
En tant que base de données en mémoire, Redis est encore principalement utilisé comme cache dans les systèmes Web Internet modernes. Les systèmes Web Internet à grande échelle ont des exigences de performances élevées, et l'ajout de la mise en cache des données entre le front-end et la couche de données est devenu l'un des moyens essentiels. Les deux technologies actuellement populaires sont Redis et Memcached. Ce n’est pas le sujet de cet article. Cet article parle principalement de la façon dont Java Web exploite Redis et le cluster Redis.
Fonctionnement général du programme Java Redis
Redis fournit des clients dans plusieurs langues, la plus populaire en Java est Jedis. Visitez pour voir le code source et comment l'utiliser. Actuellement, la dernière version de Jedis est la 2.9.0. Qu'il s'agisse d'une machine autonome ou d'un cluster, Jedis propose des instructions très détaillées et des exemples de codes. Voici seulement une brève explication. Si vous utilisez Maven pour la gestion des packages, vous devez référencer le package jedis. Cet exemple utilise la dernière version 2.9.0, comme suit :
redis.clients jedis 2.9.0 操作 Redis 单机 import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig; /** * Created by fengdezitai on 2016/10/9. */public class JedisClient { private static final String host= "192.168.31.121"; private static final JedisClient jedisClient = new JedisClient(); private Jedis jedis = null; /** * 私有构造函数 */ private JedisClient(){} public static JedisClient getInstance(){ return jedisClient; } private JedisPoolConfig getPoolConfig(){ JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(10); jedisPoolConfig.setMaxTotal(100); jedisPoolConfig.setMaxWaitMillis(3000); return jedisPoolConfig; } /** * 添加 * @param key * @param value * @return * @throws Exception */ public Boolean add(String key,String value) throws Exception{ JedisPool pool = new JedisPool(getPoolConfig(),host); Jedis jedis = null; try { jedis = pool.getResource(); if(jedis.exists(key)){ throw new Exception(String.format("key (%s) 已存在 ",key)); } jedis.set(key,value); }catch (Exception e){ throw e; } finally { if(jedis!=null){ jedis.close(); } } pool.destroy(); return true; } /** * 获取值 * @param key * @return * @throws Exception */ public String get(String key) throws Exception{ JedisPool pool = new JedisPool(getPoolConfig(),host); Jedis jedis = null; String result = ""; try { jedis = pool.getResource(); result = jedis.get(key); }catch (Exception e){ throw e; } finally { if(jedis!=null){ jedis.close(); } } pool.destroy(); return result; } public static void main(String[] args) { JedisClient jedisClient = JedisClient.getInstance(); try { /*Boolean result = jedisClient.add("hello", "redis1"); if(result){ System.out.println("success"); }*/ System.out.println(jedisClient.get("hello")); }catch (Exception e){ e.printStackTrace(); } }}
Operation redis cluster
import redis.clients.jedis.*; import java.util.HashSet; import java.util.Set; /** * Created by fengdezitai on 2016/10/13. */ public class JedisClusterClient { private static int count = 0; private static final JedisClusterClient redisClusterClient = new JedisClusterClient(); /** * 私有构造函数 */ private JedisClusterClient() {} public static JedisClusterClient getInstance() { return redisClusterClient; } private JedisPoolConfig getPoolConfig(){ JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(1000); config.setMaxIdle(100); config.setTestOnBorrow(true); return config; } public void SaveRedisCluster() { Set jedisClusterNodes = new HashSet(); jedisClusterNodes.add(new HostAndPort("192.168.31.245", 7000)); jedisClusterNodes.add(new HostAndPort("192.168.31.245", 7001)); jedisClusterNodes.add(new HostAndPort("192.168.31.245", 7002)); jedisClusterNodes.add(new HostAndPort("192.168.31.210", 7003)); jedisClusterNodes.add(new HostAndPort("192.168.31.210", 7004)); jedisClusterNodes.add(new HostAndPort("192.168.31.210", 7005)); JedisCluster jc = new JedisCluster(jedisClusterNodes,getPoolConfig()); jc.set("cluster", "this is a redis cluster"); String result = jc.get("cluster"); System.out.println(result); } public static void main(String[] args) { JedisClusterClient jedisClusterClient = JedisClusterClient.getInstance(); jedisClusterClient.SaveRedisCluster(); } }
. Spring mvc Operating Redis
Pour faire fonctionner Redis dans Spring mvc, vous devez bien sûr d'abord configurer le framework Spring mvc. Ce qui suit suppose que l'environnement Spring mvc a été configuré. Dans cet exemple, la version Spring est la version 4.3.2. La référence maven sur Spring est la suivante :
4.3.2.RELEASE org.springframework spring-core ${spring.version} commons-logging commons-logging org.springframework spring-web ${spring.version} org.springframework spring-oxm ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-webmvc ${spring.version} commons-logging commons-logging org.springframework spring-aop ${spring.version} org.springframework spring-context-support ${spring.version} org.springframework spring-test ${spring.version}
Faire fonctionner Redis de manière autonome
Utiliser uniquement Jedis pour implémenter l'injection (différent de la référence suivante spring-data-redis)
Le code JedisClient précédent peut être référencé. Il vous suffit d'implémenter un service pour accéder à Redis, et il peut être intégré à Spring mvc. Le code du service est le suivant :
import org.springframework.stereotype.Service; import util.JedisClient; /** * Created by fengdezitai on 2016/10/9. */ @Service public class RedisService { public String get(String key) throws Exception{ JedisClient jedisClient = JedisClient.getInstance(); //上面实现的JedisClient String result = ""; try { result = jedisClient.get("hello"); }catch (Exception e){ throw e; } return result; } }
Le contrôleur est implémenté comme suit :
@Controller @RequestMapping(value = "redisAllInOne") public class RedisAllInOneController { @Autowired private RedisService redisService; @RequestMapping(value = "get",method = RequestMethod.GET) @ResponseBody public Object getByMyService(String key){ try { String result = redisService.get(key); return result; }catch (Exception e){ e.printStackTrace(); } return null; } }
Utilisez le package spring-data-redis pour l'intégration
Ce qui précède est le injection implémentée par moi-même, j'utilise ici L'intégration de spring-data-redis ne nécessite qu'une configuration simple. Vous devez référencer le package maven comme suit La version est la dernière version 1.7.2.RELEASE :
org.springframework.data spring-data-redis 1.7.2.RELEASE
fichier de configuration des attributs du service redis :
redis.maxIdle=300redis.maxWait=3000redis.testOnBorrow=trueredis.host=192.168.31.121redis.port=6379redis.password=passwordredis.timeout=3000 spring-data-redis xml 配置文件 redis-context.xml: --> -->
Expliquez la configuration ci-dessus :
poolConfig configure le pool de connexions Redis, puis configure deux JedisConnectionFactory et RedisTemplate. Un RedisTemplate correspond à un JedisConnectionFactory, de sorte que Configuration Configure différentes connexions Redis selon le scénario. Par exemple, les exigences de délai d'attente sont incohérentes, la base de données 0-15 peut stocker. données différentes, etc. Les bases de données 1 et 2 sont configurées ici. L'appel de commonRedisTemplate l'enregistrera dans la base de données1 et l'appel de cacheRedisTemplate l'enregistrera dans la base de données2.
Ensuite, ces deux RedisTemplates peuvent être injectés et référencés dans la couche Service, de la manière suivante :
Enfin, appelez-les dans le Controllerimport org.apache.commons.lang3.StringUtils; import org.springframework.dao.DataAccessException; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Repository; import javax.annotation.Resource; import java.io.*; @Repository public class RedisCache { @Resource(name = "cacheRedisTemplate") private RedisTemplate
@Autowired private RedisCache redisCache; @RequestMapping(value = "get", method = RequestMethod.GET) @ResponseBody public Object getByMyService(String key) { try { String result = redisService.get(key); return result; } catch (Exception e) { e.printStackTrace(); } return null; } @RequestMapping(value = "save", method = RequestMethod.GET) @ResponseBody public Object save() { Token token = new Token(); token.setAccess_token("token"); token.setExpires_in(1000); try { redisCache.put("token", token); } catch (Exception e) { e.printStackTrace(); } return "ok"; }
Utilisez uniquement Jedis pour implémenter l'injection vous-même (différent de spring-data-redis référencé ci-dessous)
Prenez simplement le code JedisClusterClient précédent et citez-le, et il vous suffit de implémenter un accès au service Redis peut être intégré à Spring mvc. Le code du service est le suivant :
Appelez enfin le service implémenté dans le contrôleurimport org.springframework.stereotype.Service; import util.JedisClusterClient; /** * Created by fengdezitai on 2016/10/13. */ @Service public class RedisClusterService { public void save() throws Exception{ //调用 JedisClusterClient 中的方法 JedisClusterClient jedisClusterClient = JedisClusterClient.getInstance(); try { jedisClusterClient.SaveRedisCluster(); }catch (Exception e){ throw e; } } }
@Controller @RequestMapping(value = "redisCluster") public class RedisClusterController { @Autowired private RedisClusterService redisClusterService; @RequestMapping(value = "save",method = RequestMethod.GET) @ResponseBody public Object save(){ try{ redisClusterService.save(); }catch (Exception e){ e.printStackTrace(); return String.format("error: %s",e.getMessage()); } return "ok"; } }
Problème de version, si vous utilisez spring-data - Redis effectue des opérations intégrées sur le cluster Reids. Seule la dernière version 1.7 de spring-data-redis inclut des opérations sur le cluster. Certaines fonctions de la dernière version de spring-data-redis ont également certaines restrictions sur la version de Spring mvc, alors essayez. pour choisir une version supérieure de Spring mvc correspondante.
Si la valeur stockée est un objet entité, alors l'interface Serialisable doit être implémentée
[Recommandations associées]
1
Explication détaillée du code d'utilisation de. Annotations du framework Spring ExempleExplication détaillée du code de Spring et Hibernate pour l'apprentissage de la gestion des transactions JavaPartage d'un exemple de tutoriel sur l'utilisation. Spring Boot pour développer des programmes Restful Explication détaillée des sept méthodes de retour prises en charge par spring mvc. 5. Explication détaillée des exemples d'implémentation améliorés de Spring basés sur des aspects 6 Exemples de PHPRPC pour Java Spring 8. 🎜 >Explication détaillée des tutoriels pratiques sur l'utilisation d'Elasticsearch au printemps
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

Le mode Redis Cluster déploie les instances Redis sur plusieurs serveurs grâce à la rupture, à l'amélioration de l'évolutivité et de la disponibilité. Les étapes de construction sont les suivantes: Créez des instances de redis étranges avec différents ports; Créer 3 instances Sentinel, Moniteur Redis Instances et basculement; Configurer les fichiers de configuration Sentinel, ajouter des informations d'instance Redis de surveillance et des paramètres de basculement; Configurer les fichiers de configuration d'instance Redis, activer le mode de cluster et spécifier le chemin du fichier d'informations de cluster; Créer un fichier nœuds.conf, contenant des informations de chaque instance redis; Démarrez le cluster, exécutez la commande CREATE pour créer un cluster et spécifiez le nombre de répliques; Connectez-vous au cluster pour exécuter la commande d'informations de cluster pour vérifier l'état du cluster; faire

L'utilisation de la directive Redis nécessite les étapes suivantes: Ouvrez le client Redis. Entrez la commande (Verbe Key Value). Fournit les paramètres requis (varie de l'instruction à l'instruction). Appuyez sur Entrée pour exécuter la commande. Redis renvoie une réponse indiquant le résultat de l'opération (généralement OK ou -err).

Comment effacer les données Redis: utilisez la commande flushall pour effacer toutes les valeurs de clé. Utilisez la commande flushdb pour effacer la valeur clé de la base de données actuellement sélectionnée. Utilisez SELECT pour commuter les bases de données, puis utilisez FlushDB pour effacer plusieurs bases de données. Utilisez la commande del pour supprimer une clé spécifique. Utilisez l'outil Redis-CLI pour effacer les données.

La meilleure façon de comprendre le code source redis est d'aller étape par étape: familiarisez-vous avec les bases de Redis. Sélectionnez un module ou une fonction spécifique comme point de départ. Commencez par le point d'entrée du module ou de la fonction et affichez le code ligne par ligne. Affichez le code via la chaîne d'appel de fonction. Familiez les structures de données sous-jacentes utilisées par Redis. Identifiez l'algorithme utilisé par Redis.

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

Redis utilise des tables de hachage pour stocker les données et prend en charge les structures de données telles que les chaînes, les listes, les tables de hachage, les collections et les collections ordonnées. Redis persiste les données via des instantanés (RDB) et ajoutez les mécanismes d'écriture uniquement (AOF). Redis utilise la réplication maître-esclave pour améliorer la disponibilité des données. Redis utilise une boucle d'événement unique pour gérer les connexions et les commandes pour assurer l'atomicité et la cohérence des données. Redis définit le temps d'expiration de la clé et utilise le mécanisme de suppression paresseux pour supprimer la clé d'expiration.

Les étapes pour démarrer un serveur Redis incluent: Installez Redis en fonction du système d'exploitation. Démarrez le service Redis via Redis-Server (Linux / MacOS) ou Redis-Server.exe (Windows). Utilisez la commande redis-Cli Ping (Linux / MacOS) ou redis-Cli.exe Ping (Windows) pour vérifier l'état du service. Utilisez un client redis, tel que redis-cli, python ou node.js pour accéder au serveur.
