Utilisation et analyse de la base de données PHP Redis

墨辰丷
Libérer: 2023-03-26 15:48:01
original
1190 Les gens l'ont consulté

Cet article présente principalement l'utilisation de redis dans le fonctionnement d'une base de données PHP. Il analyse en détail les étapes, les méthodes et les précautions associées pour l'installation et l'utilisation de redis en PHP sous forme d'exemples. Les amis dans le besoin peuvent se référer à

<.> comme suit :

Bien que memcache soit facile à utiliser et résout le problème d'E/S lorsque la base de données rencontre une concurrence élevée, il reste encore de nombreux problèmes à résoudre :

Problème de persistance des données, memcache utilise la mémoire pour le stockage, une fois le serveur memcache tombé en panne, toutes les données stockées seront perdues.

2. Memcache stocke un seul type de données et ne prend en charge que les données clé-valeur. Pour stocker des types de données complexes, un grand nombre d'opérations logiques dans les scripts PHP sont inévitablement nécessaires.

Introduction de base à redis

Redis est également une base de données non relationnelle en mémoire. Elle présente tous les avantages du memcache dans le stockage de données, et sur la base du memcache (pour l'introduction de. memcache, veuillez consulter l'article précédent : http://www.jb51.net/article/121315.htm

Ajout d'une fonction de persistance des données, redis utilise rdb et aof pour obtenir la persistance des données, et le serveur descend soudainement. Il peut également conserver presque toutes les données existantes. Ajout des types de données string (string), set (set), sorted_set (ensemble ordonné), hash (hash) et list (liste chaînée), ce qui est beaucoup plus pratique. Type d'opérations de stockage et de base de données.
Vérification de sécurité ajoutée (peut définir le mot de passe de connexion pour le serveur
La séparation maître-esclave de Redis et d'autres systèmes sont plus complètes (développement officiel, mise en cache et). d'autres outils.

Bien sûr, par rapport à Memcache, ses opérations de base de données sont également plus compliquées

Scénarios et installation d'application Redis. En plus d'être utilisé là où Memcache peut être utilisé, redis peut également être utilisé :

Vous pouvez utiliser des listes chaînées pour stocker des données, et

pouvez l'utiliser pour lire ses dernières informations . La table de séquence stocke les données et lit ses données de classement

Vous pouvez utiliser des collections pour stocker les informations d'attention/suivi. Téléchargez la dernière version sur le site officiel (http://redis.io/). redis a été officiellement compilé, directement make / make test, vous pouvez spécifier le chemin d'installation lors de l'installation

Une fois l'installation terminée, installez le fichier de configuration redis mv dans le package d'installation. le répertoire, il faut configurer et démarrer redis.

De plus, il y a les fichiers suivants dans le répertoire bin du fichier du répertoire d'installation :

redis-benchmark/. /Outil de test de performances -n xxx signifie émettre des commandes xxx pour tester

redis-check-aof //Outil de vérification des journaux aof

redis-check-dump //Outil de vérification des journaux rbd

redis-cli/ /Clientredis-server //processus du serveur redis
redis-sentinel //processus en mode sentinelle redis


Nous utilisons vim pour ouvrir redis.conf afin de configurer simplement le serveur redis
Changez l'option démoniser sur oui pour s'exécuter en arrière-plan
base de données n Définissez un serveur Redis avec n serveurs, la valeur par défaut est 0-15, un total de 16

port n pour définir le serveur Redis en écoute port

Définissez requirepass yourpassword pour définir le mot de passe. Une fois le client connecté, utilisez le mot de passe auth pour passer la vérification

Nous utilisons la commande ./redis-server ./redis.conf pour ouvrir le serveur redis.

Utilisez ./redis-cli [-p port] pour vous connecter au serveur (6379 par défaut).

Commandes redis

Commandes de base (y compris le type de chaîne de chaîne)

commande list (liste chaînée)
set key value [ex|px n] //设置值[并设置过期时间为n秒/毫秒]
get key //获取值
del key //删除值
incby|decby key n //将key值自增或自减n
rename key newkey//覆盖原来的
select n//选择第n个数据库
ttl key //查询key的过期时间,-1表示永不过期,不存在的为-2
expire key n //设置key的过期时间为n秒 
type key //获取key的存储类型
flushdb //清除当前数据库中的值
shutdown [nosave]//关闭服务器[不存储]
Copier après la connexion

set( Set ) commande
lpush/rpush list value1 [value2 value3...] //将value压入链表头/尾
lpop/rpop list //弹出链表头/尾的值
llen list //获取链表长度
Copier après la connexion

sorted_set (ensemble ordonné) commande
sadd set value //往集合中添加value
smembers set //查看集合中的全部数据
srem set value1[value2...]//删除集合中的元素
sismember set value //判断value是否是集合中的一个元素
Copier après la connexion

zadd sorted_set score1 key1 score2 key2 score3 key3...Ajoutez une clé à l'ensemble ordonné et définissez son score. L'ensemble sera trié par score

zrange sorted_set a b [with scores] Afficher la valeur b dans la liste ordonnée de a à b Lorsqu'il est -1. , afficher tout, [afficher le score de chaque valeur]zrank/zrevrank sorted_set key Afficher la position de la clé dans l'ensemble ordonné dans l'ordre avant/arrièrezrem sorted_set key Supprimer la clé dans l'ensemble ordonné

zcard sorted_set [m n] Calculez le nombre de [score entre m et n] qu'il y a dans l'ensemble trié



commande de hachage (type de hachage)

valeur de la clé de hachage hset Définissez la valeur de la clé de la table de hachage sur value

hget hashset key Obtenez la valeur de la clé de la table de hachagehdel hashset key Supprimez une clé dans la table de hachagehlen hashset Obtenez la longueur de la table de hachage

Il existe de nombreuses commandes redis, en voici seulement quelques-unes simples. Pour des commandes spécifiques, vous pouvez consulter le document de traduction sur son site officiel ou son site chinois http://www.redis.cn/
.

redis Transactions, publications et abonnements

Les transactions dans redis sont similaires à celles de mysql, seules les instructions sont légèrement différentes.

Pour l'impact de la concurrence, redis a le contrôle de l'instruction de surveillance. Une fois que la valeur clé surveillée par l'instruction de surveillance change avant la soumission de la transaction, la transaction le sera. sera automatiquement Annuler la restauration.

        redis        mysql
开始事务    multi      start transition
          事务中的query语句
执行事务    exec        commit
回滚事务    discard       roll back
Copier après la connexion
watch key1 [key2...]

unwatch Annuler toute surveillance.

redis原生发布和订阅功能,它类似于设计模式中的观察者模式,被订阅对象一旦发布了新的消息,那么所有订阅对象都会收到这条消息。使用方式为:

subscribe key //订阅某个key,如果这个key发布了新的消息,则会收听到
public key value//发布消息key,值为value,返回值是收到这个消息的人的个数
unsubscribe key //取消监听
psubscribe key1 key2/pattrn //[根据模式]监听多个key
Copier après la connexion


redis的数据持久化

redis通过rdb和aof两种方式实现数据持久化,两种数据持久化方式都会占用CPU资源,拖慢redis的执行效率,一般两种模式配合使用。

rdb方式的主要原理就是达到某一写入条件后把内存中的所有数据的快照保存一份到磁盘上,数据恢复时用数据快照恢复。

aof方式是通过将每条redis执行命令记录入文本文件,恢复数据时重复执行记录的命令。

rdb方式实现数据持久化

用save/bgSave命令可以主动使用rdb方式[后台]存储rdb

修改redis.conf文件进行配置

save m n          //在m秒内有n次修改即进行一次快照,保存点很重要,一般会配置多个条件,满足其中之一就保存
stop-writes-on-bgsave-error yes //在进行快照的过程中如果出错,则停止写入
rdbcompression yes     //设置进行数据压缩
rdbchecksum yes       //导入数据时检查文件是否损坏
dbfilename xxx.rdb     //导出的文件名
dir path          //导出的文件路径
Copier après la connexion

aof方式实现数据持久化

aof持久化的问题在于将每条指令都记录下来,即使是对一个键的反复操作,这样会导致aof文件越来越大,使用aof重写将会大大减小aof文件的体积,因为它是在最后将数据库内数据的状态统一逆化为命令,而不论一个key经过了多少次变化。使用 bgrewrite 命令可手动重写aof文件。

配置redis.conf文件:

noapppendfsync-on-rewrite yes    //设置导出rdb时停止写入aof,aof会被写在内存队列里,dump rdb 完成后统一进行写入操作。
appendfsync everysec        //每秒写入一次
appendfilename           //path/filename.aof
auto-aof-rewrite-percentage 100   //文件大小增长100%时重写
auto-aof-rewrite-min-size 64m    //文件至少达到64m时重写
Copier après la connexion

redis的主从复制

主从复制时,主从都要以自己的.conf文件来启动服务器。主服务器可以将rdb关闭,以从服务器来产生rdb,加快主服务器的速度。

从服务器复制一个redis6380.conf文件,设置端口,pid存放文件,只读,主服务器的密码。

port 6380
pidfile filename
slave-read-only yes
masterauth password
Copier après la connexion

设置完成后,分别用不同的conf文件打开服务器。

考虑到主服务器宕机的情况,我们用sentinel redis哨兵来监测服务器状态,在主服务器宕机之后做出反应。sentinel是redis集成的,我们只需要将安装包里的sentinel.conf文件拷贝到redis/bin目录下,使用redis-sentinel进程文件来启动服务器即可。

port 26379                    //sentinel监听的端口号
daemonize yes                  //后台启动进程
sentinel monitor mymaster 192.168.100.211 6379 2 //设置主进程ip和端口号,并设置两个哨兵发现主服务器长时间无法连接才判定其宕机
sentinel down-after-milliseconds mymaster 30000 //30000毫秒连接不上判定为无法连接
sentinel parallel-syncs mymaster 1        //一个主服务器打开时,同时复制的从服务器数,太大的话会造成服务器瞬间拥堵
sentinel failover-timeout mymaster 900000    //在90000秒内哨兵不再试图恢复原主服务器
Copier après la connexion

PHP操作redis服务器

安装好php的redis扩展后(具体可参考前面的文章 Linux下php安装Redis扩展的方法 http://www.jb51.net/article/99775.htm),就可以直接使用redis的类函数库了。

如下是典型的redis应用。

$redis=new Redis();           //实例化一个Redis对象
$redis->connect(&#39;host&#39;,port);      //连接redis服务器
$redis->auth(&#39;password&#39;);        //用密码认证
$redis->set($key,$value[,$expire_time]);//设置一个值
$content=$redis->get($key);       //获取值
Copier après la connexion

相关推荐:

laravel使用Redis实现网站缓存读取实现步骤详解

CodeIgniter使用redis步骤详解

PHP操作Redis步骤详解

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!