Maison >développement back-end >tutoriel php >Commencer avec le cache Redis à partir de zéro

Commencer avec le cache Redis à partir de zéro

不言
不言original
2018-06-04 09:48:581762parcourir

Cet article explique principalement comment démarrer le cache Redis à partir de zéro, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

  1. Introduction à Redis<.>

Redis est un langage open source utilisant le ANSI ClangageÉcrire et prendre en charge le réseau, le type de journal, la Key-Valuebase de données qui peut être basée sur la mémoire ou persistante, et fournir plusieurs langues API. À partir de 2010année3mois15 jour, Le développement de Redis est hébergé par VMware. À partir de 2013 année 5 mois, Redis a été développé par PivotalSponsorisé.

redis est un système de stockage valeur-clé . Semblable à Memcached, il prend en charge relativement plus de types de valeur stockés, y compris string( Chaîne), liste(Liste), set(set), zset(ensemble trié --ensemble ordonné ) et hash (type de hachage). Ces types de données prennent tous en charge push/pop, ajouter/supprimer et récupérer Intersection, union et différence et opérations plus riches, et ces opérations sont toutes atomiques. Sur cette base, redis prend en charge diverses méthodes de tri. Comme memcached, afin de garantir l'efficacité, les données sont mises en cache en mémoire. La différence est que redis écrira périodiquement les données mises à jour sur le disque ou écrira les opérations de modification dans des fichiers d'enregistrement supplémentaires, et sur cette base, maître-esclave(Maître-esclave) synchronisation.

Redis est une base de données valeur-clé hautes performances. L'émergence de redis a largement compensé memcached de telles clé/valeurinsuffisantes le stockage peut jouer un très bon rôle supplémentaire à la base de données relationnelle dans certaines situations. Il fournit Java, C/C++, C#, PHP, JavaScript, Perl, Object-C , Python, Ruby, Erlang et d'autres clients, Très facile à utiliser. [1]

Redis prend en charge la synchronisation maître-esclave. Les données peuvent être synchronisées du serveur maître vers n'importe quel nombre de serveurs esclaves, et le serveur esclave peut être un serveur maître associé à d'autres serveurs esclaves. Cela permet à Redis d'effectuer une réplication d'arborescence à un seul niveau. La sauvegarde peut écrire des données intentionnellement ou non. Étant donné que le mécanisme d'abonnement de publication / est entièrement mis en œuvre, lorsque la base de données esclave synchronise l'arborescence n'importe où, elle peut s'abonner à un canal et recevoir l'enregistrement complet de publication de messages du serveur maître. La synchronisation est utile pour l'évolutivité et la redondance des données des opérations de lecture. L'adresse du site officiel de

redis est très facile à retenir, c'est redis.io. (J'ai vérifié spécifiquement et j'ai constaté que le suffixe du nom de domaine io appartient au nom de domaine national, qui est le territoire britannique de l'océan Indien, c'est-à-dire le territoire britannique de l'océan Indien)

Actuellement, Vmware finance le développement et la maintenance du projet redis.

2. Installation de Redis

Décompressez le fichier d'installation

Après l'avoir décompressé

Exécutez make pour compiler

Compilez OK,

Entrez le répertoire src


Fonctionnement du terminal Redis-cli

Fichier du serveur Redis pour démarrer le service Redis

Pression du benchmark Redis Fichier de test

Redis-check-xx Script de fichier de sauvegarde d'inspection automobile

Créez le répertoire d'exécution Redis et copiez-y les deux fichiers en cours d'exécution

Copiez le fichier de configuration dans le passé

3. Démarrez le service Redis

Signe de réussite dans le démarrage du service redis sur le front-end

./redis-server

Il y a un problème en ce moment. Celui actuellement démarré ne peut pas être désactivé. Il disparaîtra une fois désactivé, il doit donc être modifié

Arrêtez le service Ctrl+z<.>

Arrêtez d'abord le service Redis

Utilisez l'arrière-plan pour démarrer le service Redis

vim redis.conf

Changez pour oui et enregistrez, définissez l'arrière-plan pour démarrer Redis

Redémarrez-le

J'ai trouvé que l'avant- la fin a toujours commencé

au démarrage Démarrez le fichier de configuration ensemble

Vérifiez le processus Redis

On constate que Redis a été démarré

4 Utilisation simple

Trois variables sont définies, et ces trois variables sont stockées en mémoire

Comment lire ?

Obtenez !

5. Opérations spécifiques

1 Opération clé

Dans Redis, "n" et les espaces ne peuvent pas être utilisés comme noms De plus. au contenu du composant, un autre contenu peut être utilisé comme partie nom de la clé. Il n'y a aucune exigence concernant la longueur du nom

En d'autres termes, il s'agit du nom de la variable

Type de clé

tr> tr>Expire les secondes de la clé

Code

Fonction

代码

作用

Exists key

是否存在

Del key1 key2 ….

删除指定的key

Type key

返回给定的key的value类型

Key pattern

返回匹配指定模式的所有的key

Rename oldkey newkey

改名字

Dbsize

返回当前数据库的key的数量

Expire key seconds

为key指定过期时间

Ttl key

返回key的过期秒数

Select db-index

选择数据库

Move key db-index

将key从当前数据库移动到指定数据库

Flushdb

删除当前数据库中所有的key

Flushall

删除所有数据库中的所有key

Clé existant

Existe

Supprimer clé1 clé2….

Supprimer la clé spécifiée

Renvoie le type de valeur de la clé donnée

Modèle de clé

代码

作用

Set key value

设置key对应的值为string类型的value

Mset key1 value1…keyN valueN

一次设置多个key的值

Mget key1 key2 … keyN

一次获取多个key的值

Incr key

对key的值做++操作

Decr key

同上 –操作

Incrby key integer

同incr 加指定值

Decrby key integer

同decr 减指定值

Append key value

给指定key的字符串追加value

Substr key start end

返回截取过的key的字符串值

Renvoie toutes les clés qui correspondent au modèle spécifié
Renommer oldkey newkey Renommer
Dbsize Renvoie le nombre de clés dans la base de données actuelle
Spécifiez le délai d'expiration de la clé
Touche Ttl Renvoie les secondes d'expiration de la clé
Sélectionnez db-index Sélectionnez la base de données
Déplacer la clé db-index Déplacer la clé de la base de données actuelle vers la base de données spécifiée
Flushdb Supprimer toutes les clés du fichier actuel base de données
Flushall Supprimer toutes les clés dans tout bases de données
Voici un exemple d'utilisation de 2. opération de type La chaîne est le type le plus basique de RedisLa chaîne de Redis peut contenir n'importe quelle donnée, y compris des images jpg ou des objets sérialisésLa limite maximale d'une seule valeur est 1 Go d'octets

Code

Fonction

Définir la valeur de la clé Définir la valeur correspondant à la clé sur un type de chaîne valeur Mset clé1 valeur1...cléN valeurN Définissez les valeurs de plusieurs clés à la fois Mget key1 key2 … keyN Obtenir plusieurs clés à la fois La valeur d'une clé Clé d'augmentation right Effectuer une opération ++ sur la valeur de la clé Touche Decr Identique à ci-dessus – fonctionnement Incrby clé entière Identique à incr et ajouter la valeur spécifiée Decrby clé entière Identique à decr moins la valeur spécifiée Ajouter la valeur de la clé Ajouter la valeur à la chaîne de la clé spécifiée Substr key start end Renvoie la valeur de chaîne de la clé interceptée

3. Introduction et utilisation du type Liste

Le type Liste est en fait une liste doublement chaînée

Si vous le souhaitez pour interroger les 10 derniers utilisateurs,

doivent être vérifiés un par un, ce qui consomme trop de ressources

Exemple de table de chaîne de liste :

via liste La liste chaînée enregistre les informations des 5 derniers utilisateurs connectés au système

De nouveaux utilisateurs arrivent et les anciens utilisateurs sont expulsés

Comment faire fonctionner la liste chaînée ?

code

代码

作用

Lpush key  string

在key对应list的头部添加字符串元素

Rpop key

从list的尾部删除元素,并返回删除元素

Lien key 返回 key

对应list的长度,key值不存在返回0,如果key对应类型不是list返回错误

Rpush key  string

同上,在尾部添加

Lpop key

从list的头部删除元素,并返回删除元素

Ltrim key  start end

截取list,保留指定区间内的元素

Fonction


Chaîne de touches Lpush

Ajouter un élément chaîne en tête de liste correspondant à la clé

td>

Clé Rpop

Supprimer des éléments de la fin de la liste et renvoie l'élément supprimé

代码

作用

Sadd key  member

添加一个string元素到key对应的set集合中,返回成功1

Srem key member

从key对应·set中移除给定元素,成功返回1

Smove p1 p2  member

从p1对应set中移除member并添加到p2对应set中

Scard key

返回set的元素个数

Sismember key  member

判断member是否存在set中

Sinter key1 key2.。。。

返回所有给定key的交集

Sunion key1  key2

返回所有给定key的并集

Sdiff key1 key2.。

返回所有给定key的差集

Smembers key

返回key对应set的所有元素,结果是无序的

Clé de lien renvoie la clé
correspond à la longueur de la liste Si la valeur de la clé n'existe pas, 0. sera renvoyé Si le type de clé correspondant n'est pas une liste, une erreur sera renvoyée
Rpush. chaîne de clé Comme ci-dessus, ajoutez
Touche Lpop Supprimer l'élément de la tête de la liste et renvoie l'élément supprimé
Ltrim key start end Intercepter la liste et conserver les éléments dans la plage spécifiée
4. Définir le type de collection L'ensemble de Redis est une collection non ordonnée de type chaîne. Les éléments d'un ensemble peuvent contenir jusqu'à (2 à la puissance 32 - 1) éléments Chaque élément de chaque ensemble ne peut pas être répété

Code

Fonction

Ajouter un membre clé Ajouter un élément de chaîne à la collection d'ensembles correspondant à la clé et renvoyer le succès 1
Membre de clé Srem Correspondant à l'ensemble de clés Supprimer l'élément donné de, renvoie avec succès 1
Membre Smove p1 p2 Supprimez le membre de l'ensemble correspondant de p1 et ajoutez-le à l'ensemble correspondant de p2
Clé de carte Renvoie le nombre d'éléments dans l'ensemble
Membre clé Sismember Déterminer si le membre existe dans l'ensemble
Sinter clé1 clé2.. . . Renvoie l'intersection de toutes les clés données
Sunion key1 key2 Renvoie l'union de toutes les clés données
Sdiff clé1 clé2.. Renvoyer l'ensemble de différences de toutes les clés données
Clé Smembers Renvoie toutes les clés correspondant au éléments définis, le résultat n'est pas ordonné


Il y a une clé avec cinq éléments dedans

Ensuite, ajoutez un Linken

5. Opération de type ensemble trié SortSet

Comme un ensemble, un ensemble trié est également une collection d'éléments de chaîne

La différence est que chaque élément est associé à un poids.

Les éléments de l'ensemble peuvent être obtenus dans l'ordre grâce à la valeur de poids

Cas :

Utilisez l'ensemble de tri pour obtenir les 5 publications les plus populaires pour l'apprentissage

Chaque élément de l'ensemble trié est une combinaison de valeur et de poids

Membre du score clé ZaddIdem que ci-dessus, le retour se fait dans l'ordre inverse tr>

Code

代码

作用

Zadd key  score member

添加元素到集合,元素在集合中存在则更新对应score

Zrem key  member

删除指定元素,1成功,0不存在

Zincrby key incr  member

按照incr幅度增加对应member的score值,返回score值

Zrank key member

返回指定元素在集合中的排名(下标),集合中元素是安score从小到大排序的

Zrange key  start end

类似Irange操作从集合中指定区间的元素,返回的是有序结果

Zrevrange key start  end

同上,返回是逆序的

Zcard key

返回集合中元素个数

Zscore key elemet

返回给定元素对应的score

Zremrangebyrank  key min max

删除集合中排名在给点区间的元素

Fonction

Ajouter des éléments à la collection, et mettre à jour la note correspondante si l'élément existe dans la collection
Membre clé Zrem strong> Supprimer l'élément spécifié, 1 réussi, 0 n'existe pas
Membre d'augmentation de clé en zinc Augmentez la valeur du score du membre correspondant en fonction de la plage d'augmentation et renvoyez la valeur du score
Membre clé Zrank Renvoie le classement (indice) de l'élément spécifié dans l'ensemble. Les éléments dans les ensembles sont triés du petit au grand par score
Démarrage de la touche Zrange end Similaire à l'opération Irange, les éléments de la plage spécifiée sont renvoyés à partir de l'ensemble, et les résultats ordonnés sont renvoyés
Zrevrange key start end
Clé Zcard Renvoie le nombre d'éléments dans la collection
Élément clé Zscore strong> Renvoie le score correspondant à l'élément donné
Zremrangebyrank key min max Supprimer les éléments de la collection classés dans l'intervalle de points donné


6. Persistance de l'instantané

Enregistrer (instantané) un changement de clé en 900 secondes

Dix changements de clé en 300 secondes (instantané) enregistrer

Dix mille changements de clé en une minute (instantané) enregistrer

Les avantages d'un tel contrôle :

La fréquence de modification des données est très élevée, et la fréquence de sauvegarde est également élevé ,

La fréquence de modification des données est faible et la fréquence de sauvegarde est également faible.

Le nom de la persistance de l'instantané



Initier manuellement la persistance des instantanés

Si pour cette machine :

7. Essence : sauvegardez chaque commande "écrire" (ajouter, supprimer, modifier) ​​exécutée par l'utilisateur dans un fichier et exécutez la commande "écriture" spécifique lors de la restauration

L'activation de la persistance AOF effacera l'intérieur de redis Données

Activer la persistance AOF

Le fichier de configuration est modifié et redémarrer le service

Voir le processus redis

: Ps – A | grep redis

-9 force kill process

démarrer un nouveau processus

Aof ajoute une fréquence de sauvegarde persistante

Toujours force l'écriture sur le disque immédiatement après avoir reçu une commande d'écriture. Il est très lent, mais peut maintenir une persistance complète

Everysec force l'écriture sur le disque une fois par seconde. Il fait un bon travail en termes de performances et de persistance. . Un compromis, recommandé

Non s'appuie entièrement sur le système d'exploitation pour les meilleures performances, mais la persistance n'est pas garantie

Mode maître-esclave

Afin de réduire la charge. de chaque serveur Redis, vous pouvez en définir plusieurs, et en mode maître-esclave

Un serveur charge "écrit"

D'autres serveurs chargent "lire"

Le serveur maître synchroniser automatiquement avec le serveur esclave


Modifier l'adresse IP et le numéro de port

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn