Cet article présentera l'utilisation de base de Redis.
1. Partie de base de Redis :
Occasions applicables de Redis
1. L'opération d'obtention des dernières données N
2. Application de classement, obtention de l'opération TOP N
3. définir avec précision l'application
4. Application de compteur
5. Opération Uniq, obtenir toutes les valeurs de déduplication des données pendant une certaine période de temps
6. système anti-spam
7.Pub/Sub crée un système de messagerie en temps réel
8. Créer un système de file d'attente
Cache
Opération SET 110 000 fois par seconde, les opérations GET sont 81 000 fois par seconde et la configuration du serveur est la suivante :
Linux 2.6, Xeon X3320 2,5 Ghz.
Le Le site Web stackoverflow utilise Redis comme serveur de cache.
Les données seront également écrites sur le disque dur en même temps. Ainsi les données sont en sécurité (sauf coupure de courant soudaine, le redémarrage du service sera écrit dans le fichier dump.rdb)
1) Installation :
tar zxvf redis-2.6.9.tar.gz cd redis-2.6.9 make cd src && make install
2) Déplacer l'emplacement du fichier de configuration (pour faciliter la gestion)
cd /usr/local/ mkdir -p /usr/local/redis/bin mkdir -p /usr/local/redis/etc mv /lamp/redis-2.6.9/redis.conf /usr/local/redis/etc cd /lamp/redis-2.6.9/src mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
3) Modifier le fichier de configuration
vi /usr/local/redis/etc/redis.conf
Remplacez no dans démoniser non par oui [oui fait référence à l'exécution en arrière-plan]
4) Démarrage/démarrage aléatoire :
cd /usr/local/redis/bin ./redis-server /usr/local/redis/etc/redis.conf#启动redis并指定配置文件。 #vi /etc/rc.local #设置随机启动。 /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
5) Vérifiez si le démarrage a réussi
ps -ef | grep redis netstat -tunpl | grep 6379#查看端口是否占用。
6) Entrez client/sortie
cd /usr/local/redis/bin ./redis-cli#进入 quit#退出
7) Fermez redis
pkill redis-server#关闭 ./redis-cli shutdown#关闭
Sécurité Redis
Sécurité de Redis ??? (par les 4 méthodes suivantes)
1.
2. Ajoutez la ligne de configuration suivante au fichier de configuration redis.conf pour lier redis à une seule interface (mais elle n'accepte pas uniquement les données de cette carte réseau).
bind 127.0.0.1
3. Ajoutez un mot de passe plus long à redis (pas besoin de s'en souvenir)
4. La configuration .conf active la fonction d'authentification.
5. Proxy SSL
6. Désactivez la commande spécifiée.
Configuration Redis
daemonize Si vous devez exécuter en arrière-plan, remplacez cet élément par oui
pidfile Configurez plusieurs adresses pid par défaut dans /var/run/redis.pid
bind Bind Binding IP, après réglage, n'acceptez que les demandes de cette IP
port port d'écoute, la valeur par défaut est 6379
timeout Définir le délai d'expiration lorsque le client se connecte, en secondes
le niveau de journalisation est divisé en 4 niveaux, débogage, verbeux, notification, avertissement
logfile Configurer l'adresse du fichier journal
bases de données Définir le nombre de bases de données, la base de données par défaut utilisée est 0
enregistrer Configurer redis Fréquence de mise en miroir de la base de données
rdbcompression S'il faut compresser lors de l'exécution d'une sauvegarde miroir
Dbfilename Nom du fichier de sauvegarde miroir
Dir Database Chemin de placement des fichiers pour la sauvegarde miroir
Slaveof Définir la base de données comme base de données esclave d'autres bases de données
Vérification du mot de passe Masterauth requise pour la connexion à la base de données principale
Requirepass Définir le mot de passe requis pour la connexion
Maxclients Limiter le nombre de clients connectés en même temps
Maxmemory Définir la mémoire maximale que Redis peut utiliser
Appendonly Activer le mode ajout uniquement
Vous pouvez connaître les éléments suivants :
Appendfsync Définir la fréquence de synchronisation de appendonly Fichiers .aof
vm-enabled Activer ou non la prise en charge de la mémoire virtuelle
vm-swap-file Définir le chemin du fichier d'échange de la mémoire virtuelle
vm-max-memory Définit celui utilisé par redis Taille maximale de la mémoire physique
vm-page-size Définit la taille de page de la mémoire virtuelle
vm-pages Définit le total numéro de page du fichier d'échange
vm-max -threads Définit le nombre de threads utilisés par VM IO en même temps
Glueoutputbuf Stocke ensemble les petits caches de sortie
hash- max-zipmap-entries Définissez la valeur critique du hachage
Activerehashing Rehash
5 types de données : chaîne, hachage, liste chaînée, ensemble, ensemble ordonné.
Prend en charge : push/pop, ajout/suppression, intersection, union, différence et tri.
redis<===Sync====>mysql
En même temps, les données seront écrites sur le disque dur. Ainsi les données sont en sécurité (sauf en cas de coupure de courant soudaine, le redémarrage du service sera écrit dans le fichier dump.rdb)
select num#Sélectionnez la bibliothèque, la valeur par défaut est 0 bibliothèque, un total de 16 bibliothèques
auth liweijie#Mot de passe requis pour les utilisateurs autorisés (le mot de passe est le mot de passe configuré dans redis.conf)
flushdb#Effacer la base de données.
Type de chaîne (string) :
set name lijie#Définissez la valeur du nom de la clé sur lijie
get name#Obtenez la valeur du nom.
clés *#Interroger toutes les clés.
setnx name liweijie#Si la clé existe déjà, renvoyez 0 et ne mettez pas à jour pour éviter l'écrasement.
setex haircolor 10 red #La période de validité de la valeur clé définie est de 10 secondes.
setrange email 6 lampbre.com#Remplacez la valeur de la clé de remplacement par lampbre.com à partir du 6ème caractère
mset name1 Li Dawei name2 Li Xiaowei#Définissez les valeurs de plusieurs clés.
msetnxname1 Zhang San name3 Li Si# Déterminez si la clé existe, définissez-la si elle n'existe pas, sinon renvoyez 0 si elle n'est pas définie
mget name1 name2 name3#Obtenez les valeurs de plusieurs clés à la fois.
getset name1 Tom#Réinitialise la valeur de la clé et renvoie l'ancienne valeur de la clé.
getrange email 6 18#Interceptez la valeur de la clé email, à partir des caractères entre le 6ème et le 18ème.
incr uid#increment de 1 à chaque fois (si l'uid dans la clé n'existe pas, définissez-le et recommencez à 0, idem ci-dessous)
incrby uid 5#increment de 5 chacun time
augmente par uid -5#Diminue de 5 à chaque fois
diminue par uid #Diminue de 1 à chaque fois
diminue de uid 5#Diminue de 5 à chaque fois
appendname1 @ 126.com#Ajoutez la chaîne @126.com
strlenname1# à la valeur de name1#Renvoyer la longueur de la valeur de la clé name1.
Type de hachage (Hash) :
hset user:001 name liweijie#Hash définit la valeur de la clé de nom de l'utilisateur user:001 sur liweijie
hset user : 001 age 21#De même, ajoutez une valeur de clé d'âge de 21
hsetnx user:001 age 22#Identique à ci-dessus, mais vérifiez si la clé existe. Créez s'il n'existe pas.
utilisateur hmset :002 nom liweijie2 âge 26 sexe 1#Définissez les valeurs de plusieurs clés en même temps.
hget user:001 name#Hash obtient la valeur de la clé de nom de l'utilisateur user:001.
hget user:001 age #Identique à ci-dessus.
hmget user:001 name age sex#Obtenir les valeurs de plusieurs clés spécifiées.
hgetall user:001#Obtenir les valeurs de toutes les clés.
hincrbyuser:001 age -8#Ajoute la valeur donnée à la clé spécifiée.
hexists user:001 sex#Vérifiez si la valeur de clé spécifiée existe.
hlen user:001#Renvoie le nombre de clés/champs du hachage spécifié.
hdel user:001 sex#Supprimez le champ spécifié ou la valeur clé du hachage spécifié (user:001).
hkeys user:003#Renvoyer tous les champs ou valeurs clés dans le hachage.
Type et fonctionnement des listes (liste chaînée) (pile ou file d'attente) :
lpush mylist "world"#Insérer une chaîne depuis la tête
lpush mylist "hello "# Comme ci-dessus
lrange mylist 0 -1#Obtenir de 0 au dernier tel que [1) "bonjour" 2) "monde"]
rpush mylist "jiejie "#Insérer
linsert mylist avant "hello" "this is linsert" #Spécifiez la position d'insertion (insérer avant bonjour) à la fin.
lset mylist 0 "what"#Définit et modifie la valeur de l'indice spécifié.
lrem mylist 1 "hello"#Supprimer (1) un élément avec la valeur bonjour. (n<0 est supprimé de la queue, n=0 est entièrement supprimé)
ltrim mylist 1 2 #Conserver les éléments avec l'indice 1/2 dans le tableau.
lpop mylist# Affichez l'élément de début et revenez.
rpop mylist# Affichez l'élément tail et revenez.
rpoplpush mylist mylist2 #Pop depuis la fin de mylist et insérez-le dans l'en-tête de mylist2.
lindex mylist 0#Obtenir la valeur de l'élément avec l'indice de table 0.
llen mylist#Renvoie le nombre d'éléments du tableau (équivalent à count($arr )).
définit (set) le type et le fonctionnement (recommandation d'amis, blog, fonction de balise) :
smembers myset#Affichez toutes les valeurs des éléments de l'ensemble myset.
sadd myset "hello" #Ajouter une valeur hello à la collection mysets
srem myset "hello" #Supprimer l'élément nommé hello dans la collection myset.
spop myset #Apparaît aléatoirement et renvoie un élément dans mysets.
sdiff myset2 myset3#Renvoie la différence entre myset2 et myset3 (sous réserve de myset2).
sdiffstore myset4 myset2 myset3#Renvoie la différence entre myset2 et myset3 et stockez-la dans myset4.
sinter myset2 myset3#Renvoie l'intersection de myset2 et myset3.
sinterstore myset5 myset2 myset3#Renvoyer l'intersection de myset2 et myset3 et la stocker dans myset5.
sunion myset2 myset3#Trouver l'union (supprimer la duplication)
sunionstore myset6 myset2 myset3#Trouver l'union et la stocker dans myset6.
smove myset2 myset3 "trois" #Déplacez trois de myset2 vers myset3.
scard myset2#Renvoie le nombre d'éléments.
sismember myset2 "one"# Détermine si l'élément one est dans l'ensemble myset2 (équivalent à is_array()).
srandmember myset2# Renvoie aléatoirement un élément de l'ensemble myset2, mais ne le supprime pas (équivalent à array_rand()).
ensembles triés (ensemble ordonné) type et opération (triés par scores) :
zadd myzset 1 "un"#Ajouter l'élément un à la séquence 1
zadd myzset 2" two"# Comme ci-dessus.
zadd myzset 3 "two"#Équivalent à une valeur avec un ordre de mise à jour de 2
zrange myzset 0 -1 withscores#Affichez tous les éléments et triez-les (ordre croissant par défaut).
zrem myzset "two"#Supprimer deux
zincrby myzset 2 "two"#Ajouter 2 à la valeur de séquence de two
zrank myzset "two"#Retour au set La valeur de l'indice d'index de l'élément.
zrevrank myzset two#Inversez l'élément et renvoyez la nouvelle valeur d'indice.
zrevrange myzset 0 -1 withscores#Inverser dans l'ordre (équivalent au tri par ordre décroissant)
zrangebyscore myzset 1 10 withscores#Renvoyer les éléments dans l'ordre 1-10 (peut être paginé).
zcount myzset 1 10 #Renvoie le nombre d'éléments dans l'ordre entre 1 et 10.
zcard myzset#Renvoie le nombre de tous les éléments de l'ensemble.
zremrangebyrank myzset 1 2#Supprimer les éléments avec les indices 1 à 2 dans l'ensemble.
zremrangebyscore myzset 1 10#Supprimer les éléments de 1 à 10 dans l'ensemble.
Commandes communes Redis
Commandes liées à la clé/valeur.
keys * #Interroger toutes les
keys user*#Interroger l'
exists spécifié user:001# pour déterminer s'il existe.
del name#Supprime la clé spécifiée.
expire addr 10#设置过期时间
ttl addr#查询过期时间
select 0 #选择数据库
move age 1#将age移到1数据库。
get age #获取
persist age#移除age的过期时间。
randomkey#随机返回一个key
rename name1 name2#重命名键
type myset#返回键的类型。
ping #测试redis连接是否存活。
echo lamp#输出一个lamp
select 10#选择数据库。
quit/exit/crtl+C#退出客户端
dbsize#返回库里的键的个数。
服务器相关命令:
info#显示redis服务器的相关信息。
config get */loglevel #返回所有/指定的配置信息。
flushdb#删除当前库中的所有键/表。
flushall#删除所有数据库中的所有键/表
二、Redis高级部分:
1、Redis安全性:
1.用ACL控制器安全性。
2.给redis加上较长密码
# requirepass foobared
requirepass beijing
3.在redis.conf配置启用认证功能。
方式一:Auth beijing
方式二:./redis-cli -a beijing
4.在redis.conf配置文件增加下面这一行配置,即可把redis绑定在单个接口上(但并不是只有接受这个网卡的数据)。
bind 127.0.0.1(单台机器的时候可以配置,分布式或主从复制时最好不要配置)
5.SSL代理
6.禁用指定命令。
2、Redis主从复制:
redis只需在从服务器(slave)上配置即可:
slaveof 211.122.11.11 6379 #指定master 的ip 和端口
masterauth beijing#这是master主机的密码
Info#查看主/从服务器的状态。
3、Redis事务处理:
Redis事务很不完善。
4、Redis持久化机制:
方式一、备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式]
记录操作命令[ Append-only file(缩写aof)的方式]
备份数据到磁盘(快照)[ snapshotting(快照)也是默认方式]
save 900 1 #900秒内如果超过1个key被修改,则发起快照保存 save 300 10 #300秒内容如超过10个key被修改,则发起快照保存 save 60 10000
方式二、记录操作命令[ Append-only file(缩写aof)的方式](较安全持久化)
appendonly yes #启用aof 持久化方式 # appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化 appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
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!