Résumé d'apprentissage Redis Résumé Redis

Résumé de Redis

Introduction à Redis


Redis:开源、免费、高性能、K-V数据库、内存数据库、非关系型数据库,支持持久化、集群和事务

Installation et configuration de Redis


  1. Exécutez Redis avec docker
docker pull redis
docker run -d --name redis -p 6379:6379 redis
docker exec -it redis redis-cli
  1. Installation Linux
  1. Assurez-vous que Linux a installé gcc
  2. Télécharger Redis
    wget http://download.redis.io/releases/redis-4.0.1.tar.gz
  3. Décompressez
    tar -zxvf redis-4.0.1.tar.gz
  4. Compilez après être entré dans le répertoire
    cd redis-4.0.1
    make MALLOC=libc
  5. Installation
    make PREFIX=/usr/local/redis install#Spécifiez le répertoire d'installation comme / usr / local / redis
  6. Commencez
    /usr/local/redis/bin/redis-server
  1. Configuration Redis
  1. Entrez dans le répertoire Redis décompressé et copiez redis.conf dans le répertoire du fichier d'installation
    cp redis.conf /usr/local/redis
  2. Démarrez Redis avec une configuration personnalisée
    /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
  1. Configuration détaillée
  • daemonize: la valeur par défaut est non, modifiez-la sur yes pour activer le thread démon
  • port: définissez le numéro de port, la valeur par défaut est 6379
  • bind: liez l'adresse IP
  • bases de données: le nombre de bases de données, la valeur par défaut est 16
  • save <second> <changes>: Spécifiez le nombre de fois et le nombre d'opérations de mise à jour, puis synchronisez les données avec le fichier de données
    #redis默认配置有三个条件,满足一个即进行持久化
    save 900 1# 900s 有 1 个 改
    save 300 10# 300s 有 10 个
    save 60 10000# 60s 有10000changes
  • dbfilename: spécifiez le nom de fichier de la base de données locale, la valeur par défaut est dump.rdb
  • dir: Spécifiez le répertoire de stockage de la base de données locale, la valeur par défaut est ./current folder
  • requirepass: définir un mot de passe, fermé par défaut
    redis -cli -h host -p port -a password
  1. Redis est éteint
  • Utilisez la commande kill (arrêt anormal, les données sont faciles à perdre)
    ps -ef|grep -i redis
    kill -9 PID
  • Arrêt normal
    redis-cli shutdown

Commandes courantes Redis


Redis cinq types de données: chaîne, hachage, liste, ensemble, zset

Commande publique
  • Touche DEL
  • Clé DUMP: sérialise la clé donnée et renvoie la valeur sérialisée
  • Clé EXISTS: vérifiez si la clé existe
  • EXPIRE clé seconde: définir le délai d'expiration de la clé
  • Clé TTL: retourne le temps restant de la clé
  • Clé PERSIST: supprimez le délai d'expiration de la clé et la clé sera stockée de manière persistante
  • Modèle KEY: interroge la clé d'un modèle donné de tous les symboles
  • Clé ALÉATOIRE: retourne une clé au hasard
  • RANAME key newkey: modifier le nom de la clé
  • MOVE key db: déplace la clé vers la base de données spécifiée
  • Touche TYPE: renvoie le type de la valeur stockée dans la clé
EXPIRE key second的使用场景:
1、限时的优惠活动
2、网站数据缓存
3、手机验证码
4、限制网站访客频率
Suggestions de noms clés
  1. La clé ne doit pas être trop longue, essayez de ne pas dépasser 1024 octets. Non seulement consomme de la mémoire, mais réduit également l'efficacité de la recherche
  2. La clé ne doit pas être trop courte, trop courte réduira la lisibilité
  3. Dans un projet, il est préférable d'utiliser un schéma de dénomination unifié pour la clé, tel que user: 123: password
  4. La clé est sensible à la casse

chaîne de caractères

Le type de chaîne est de sécurité binaire et la chaîne redis peut contenir toutes les données, telles que des images et des objets sérialisés. Une clé peut stocker jusqu'à 512 Mo. == La sécurité binaire signifie que lorsque les données sont transmises, la sécurité de l'information des données binaires peut être garantie, c'est-à-dire qu'elles ne seront ni falsifiées ni déchiffrées; si elles sont attaquées, elles peuvent être détectées à temps ==

  • setkey_name value : La commande n'est pas sensible à la casse, mais le key_name est sensible à la casse
  • Valeur de clé SETNX : définissez la valeur de la clé lorsque la clé n'existe pas. (SET si pas eXists)
  • obtenir nom_clé
  • GETRANGE key start end: Récupère la sous-chaîne de la chaîne dans la clé, en commençant par le début et en se terminant par la fin
  • MGET key1 [key2…]: Obtenir plusieurs clés
  • GETSET KEY_NAME VALUE: définissez la valeur de la clé et renvoyez l'ancienne valeur de la clé. Lorsque la clé n'existe pas, renvoie nil
  • Clé STRLEN: renvoie la longueur de la chaîne stockée dans la clé
  • INCR KEY_NAME : la valeur stockée dans la touche de commande INCR est +1, s'il n'y a pas de clé, la valeur de la clé est initialisée à 0 puis ajoutée à 1.
  • INCRBY key_name incrément
  • DECR KEY_NAME : la valeur de la clé est décrémentée de un
  • DECRBY KEY_NAME
  • append key_name value: épissage de chaîne, ajouter à la fin, s'il n'existe pas, lui attribuer une valeur

Scénarios d'application de chaîne:

1、String通常用于保存单个字符串或JSON字符串数据
2、因为String是二进制安全的,所以可以把保密要求高的图片文件内容作为字符串来存储
3、计数器:常规Key-Value缓存应用,如微博数、粉丝数。INCR本身就具有原子性特性,所以不会有线程安全问题

hacher

Redis hash est une table de mappage entre le champ et la valeur de type chaîne. Le hachage est particulièrement adapté pour stocker des objets . Chaque table de hachage peut stocker 2 32 -1 paires clé-valeur. Il peut être vu comme un conteneur MAP pour KEY et VALUE. Comparé à JSON, le hachage occupe très peu d'espace mémoire.

Commandes courantes

  • Valeur du champ HSET key_name: définissez le champ et la valeur de la clé spécifiée
  • valeur du champ de clé hmset [champ1, valeur1]
  • champ clé hget
  • champ clé hmget [champ1]
  • clé hgetall: renvoie tous les champs et valeurs de la table de hachage
  • hkeys key: récupère tous les champs de la table de hachage
  • clé hlen: obtenir le nombre de champs dans la table de hachage -
    champ de clé hdel [champ1]: supprimer un ou plusieurs champs dans la table de hachage

Scénarios d'application

Hash的应用场景,通常用来存储一个用户信息的对象数据。
1、相比于存储对象的string类型的json串,json串修改单个属性需要将整个值取出来。而hash不需要。
2、相比于多个key-value存储对象,hash节省了很多内存空间
3、如果hash的属性值被删除完,那么hash的key也会被redis删除

liste

Similaire à LinkedList en Java.

Commandes courantes

  • lpush clé valeur1 [valeur2]
  • rpush clé valeur1 [valeur2]
  • valeur de clé lpushx: insérez la valeur de gauche, si la liste n'existe pas, n'opérez pas
  • valeur de clé rpushx: insérez la valeur de droite, si la liste n'existe pas, n'opérez pas
  • Touche llen: obtenir la longueur de la liste
  • index de clé lindex: récupère l'élément de l'index spécifié
  • lrange key start stop: Récupère les éléments dans la plage spécifiée de la liste
  • touche lpop: supprime le premier élément de la gauche
  • clé prop: supprime le dernier élément de la liste
  • blpop key [key1] timeout: Supprime et récupère le premier élément de la liste. S'il n'y a aucun élément dans la liste, la liste sera bloquée jusqu'à ce que le délai d'attente ou l'élément pop-up soit trouvé
  • brpop key [key1] timeout: Supprime et récupère le dernier élément de la liste. S'il n'y a aucun élément dans la liste, la liste sera bloquée jusqu'à ce que le délai d'attente ou l'élément pop-up soit trouvé
  • ltrim key start stop: modifiez la liste de sorte que la liste ne conserve que les éléments dans l'intervalle spécifié, et les éléments qui ne sont pas dans l'intervalle spécifié seront supprimés
  • lset key index value: la valeur de l'index spécifié
  • linsert key before | after world value: insère un élément avant ou après l'élément de liste

Scénarios d'application

1、对数据大的集合数据删减
		列表显示、关注列表、粉丝列表、留言评价...分页、热点新闻等
2、任务队列
		list通常用来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样通过order by来排序

supplément:

  • rpoplpush list1 list2 Supprimez le dernier élément de list1, ajoutez l'élément à list2 et renvoyez cet élément
    . Cette commande peut être utilisée pour implémenter le processus de passation de commande, la connexion au système utilisateur et l'enregistrement SMS, etc.

ensemble

Unique, désordonné

  • sadd key value1 [value2]: ajouter des membres à la collection
  • clé scard: renvoie le nombre de membres de la collection
  • smembers key: renvoie tous les membres de l'ensemble
  • sismember key member: détermine si l'élément memeber est un membre du membre key set
  • srandmember key [count]: renvoie un ou plusieurs nombres aléatoires dans l'ensemble
  • srem key member1 [member2]: supprimer un ou plusieurs membres de l'ensemble
  • clé spop: supprimer et renvoyer un élément aléatoire dans l'ensemble
  • smove source destination member: déplacez l'élément membre de la collection source vers la collection destination
  • sdiff key1 [key2]: renvoie la différence de tous les ensembles
  • sdiffstore destination key1 [key2]: renvoie la différence de tous les ensembles donnés et les stocke dans la destination
对两个集合间的数据[计算]进行交集、并集、差集运算
1、以非常方便的实现如共同关注、共同喜好、二度好友等功能。对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存储到一个新的集合中。
2、利用唯一性,可以统计访问网站的所有独立 IP

zset

Ordonné et non répétitif. Chaque élément est associé à un score de type double, et Redis trie de petit à grand par le score. Le score peut être répété

ZADD key score1 memeber1
ZCARD key: Obtenir le nombre d'éléments
dans l'ensemble
ZCOUNT key min max Calculer le nombre de membres avec le score d'intervalle spécifié dans l'ensemble ordonné ZCOUNT key min max Calculer le nombre de membres avec le score d'intervalle spécifié dans le Ensemble ordonné
Membre de la clé ZRANK: return Index du membre spécifié de l'ensemble
ordonné Touche ZREVRANGE start stop: Renvoie le membre dans la plage spécifiée de l'ensemble ordonné, et le score va du plus élevé à la fin via l'index.
Clé ZREM membre [membre…] Supprime un ou plusieurs membres de l'ensemble ordonné.
ZREMRANGEBYRANK clé start stop Supprime tous les membres de l'intervalle de classement donné dans l'ensemble ordonné (la première place est de 0) (de bas à haut rang)
ZREMRANGEBYSCORE clé min max Supprimer tout membres de l'intervalle de score donné dans l'ensemble ordonné

常用于排行榜:
1、如推特可以以发表时间作为score来存储
2、存储成绩
3、还可以用zset来做带权重的队列,让重要的任务先执行

Jedis 和 Spring-data-redis


  1. Connecter redis
@Test
public void test(){
    
    
	Jedis jedis = new Jedis("host",port);
	jedis.auth("password");
	// 操作redis
	jedis.close();
}
  1. JedisPiscine
// 创建config
JedisPoolConfig config = new JedisPoolConfig();
con.setMaxTotal(5);// 最大连接数
...
// 创建连接池
JedisPool pool = new JedisPool(config,host,port);
Jedis jedis = pool.getResource();
jedis.auth();
  1. Spring-data
  • Importer Jedis et Spring-data-redis
  • Le fichier de configuration est le suivant
    Insérez la description de l'image ici
    -test connection
    Insérez la description de l'image ici
  • Configurez la méthode de sérialisation:
    enregistrez toutes les données dans redis, elles doivent être sérialisées et JdkSerializationRedisSerializer est utilisé pour la sérialisation par défaut. JdkSerializationRedisSerializer ajoute une chaîne de chaînes à toutes les clés et valeurs, ainsi qu'aux caractères d'origine de la clé de hachage et de la valeur de hachage.Insérez la description de l'image ici

Fonctionnalités de Redis


Publiez et abonnez-vous

Redis publish and subscribe (pub / sub) est un mode de communication de message: l'expéditeur (pub) envoie un message, et l'abonné (sous) reçoit le message.

Les clients Redis peuvent s'abonner à n'importe quel nombre de canaux.

La figure suivante montre la relation entre le canal channel1 et les trois clients qui s'abonnent à ce channel-client2, client5 et client1:
Insérez la description de l'image ici
Lorsqu'un nouveau message est envoyé au channel channel1 via la commande PUBLISH, ce message sera envoyé pour s'y abonner. les trois clients:
Insérez la description de l'image ici
commandes

  • s'abonner à la chaîne [chaîne ...]: s'abonner à une ou plusieurs chaînes
  • psubscribe pattern [pattern ...]: s'abonner à un ou plusieurs canaux conformes au pattern spécifié
  • publier le message du canal: envoyer des informations au canal spécifié
  • unsubscribe [channel [channel…]]: Se désabonner de la chaîne
  • punsubscribe [pattern [pattern…]]: Se désabonner de tous les canaux d'un pattern donné

Scénarios d'application

构建实时的消息系统,比如普通聊天、群聊等功能。
1、博客网站订阅,当作者发布就可以推送给粉丝
2、微信公众号模式

Multi-base de données Redis

  • sélectionnez db
  • déplacer la clé db
  • flushdb
  • flushall

Transaction Redis

Les transactions Redis peuvent exécuter plusieurs commandes à la fois (exécutées séquentiellement dans l'ordre, et d'autres commandes ne sont pas autorisées à être insérées dans la séquence d'exécution pendant l'exécution).
1. Redis sérialisera toutes les commandes d'une transaction, puis les exécutera dans l'ordre
2. Pendant l'exécution, elles ne seront pas insérées par d'autres commandes et le brouillage n'est pas autorisé.

Insérez la description de l'image ici

  1. Entrez la commande Multi pour démarrer, les commandes entrées entreront toutes tour à tour dans la file d'attente de commandes, mais ne seront pas exécutées
  2. Jusqu'à ce que vous entriez exec, Redis exécutera les commandes de la file d'attente précédente dans l'ordre
    Insérez la description de l'image ici
  3. ignorer l'exécution de la file d'attente
    Insérez la description de l'image ici
  4. Si une commande signale une erreur, seule la commande qui signale l'erreur ne sera pas exécutée et les autres commandes seront exécutées sans retour arrière.
    Insérez la description de l'image ici
  5. Si une commande dans la file d'attente signale une erreur (erreur de syntaxe), toute la file d'attente sera annulée lors de l'exécution

Réplication maître-esclave

Configuration de la réplication maître-esclave Redis

Cluster Redis

Configuration du cluster Redis:
documentation
Redis Tutoriel sur le cluster
Redis
Configuration du cluster Redis-5.0.5 La différence entre la configuration du cluster Redis autonome et du cluster Redis
Redis-4.0

Persistance Redis

  1. RDB

RDB est le mécanisme de persistance par défaut pour Redis. RDB équivaut à un instantané, qui enregistre un état

Avantages:
économiser de la vitesse, la vitesse de restauration est extrêmement rapide,
convient à la sauvegarde après sinistre
Inconvénients: les
petites machines à mémoire ne conviennent pas. Le mécanisme RDB prendra un instantané s'il répond aux exigences.

  1. AOF
    Si Redis est accidentellement arrêté, la méthode RDB perdra toutes les modifications après le dernier instantané. Si l'application doit ne perdre aucune modification, la persistance AOF peut être utilisée.

AOF: Append-Only File: Redis ajoutera chaque commande d'écriture reçue au fichier (la valeur par défaut est appendonly.aof). Lorsque Redis redémarre, il réexécutera la commande d'écriture dans le fichier pour reconstruire le contenu de la base de données entière.

Le problème qui se pose:
certaines commandes sont redondantes.

Je suppose que tu aimes

Origine blog.csdn.net/qq_42647711/article/details/104814203
conseillé
Classement