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 à redisRedis 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.htmAjout 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 testerredis-check-aof //Outil de vérification des journaux aof
redis-check-dump //Outil de vérification des journaux rbdredis-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-planbase de données n Définissez un serveur Redis avec n serveurs, la valeur par défaut est 0-15, un total de 16
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 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]//关闭服务器[不存储]
set( Set ) commande
lpush/rpush list value1 [value2 value3...] //将value压入链表头/尾 lpop/rpop list //弹出链表头/尾的值 llen list //获取链表长度
sorted_set (ensemble ordonné) commande
sadd set value //往集合中添加value smembers set //查看集合中的全部数据 srem set value1[value2...]//删除集合中的元素 sismember set value //判断value是否是集合中的一个元素
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)
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/
.
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
unwatch Annuler toute surveillance.
redis原生发布和订阅功能,它类似于设计模式中的观察者模式,被订阅对象一旦发布了新的消息,那么所有订阅对象都会收到这条消息。使用方式为:
subscribe key //订阅某个key,如果这个key发布了新的消息,则会收听到 public key value//发布消息key,值为value,返回值是收到这个消息的人的个数 unsubscribe key //取消监听 psubscribe key1 key2/pattrn //[根据模式]监听多个key
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 //导出的文件路径
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时重写
redis的主从复制
主从复制时,主从都要以自己的.conf文件来启动服务器。主服务器可以将rdb关闭,以从服务器来产生rdb,加快主服务器的速度。
从服务器复制一个redis6380.conf文件,设置端口,pid存放文件,只读,主服务器的密码。
port 6380 pidfile filename slave-read-only yes masterauth password
设置完成后,分别用不同的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秒内哨兵不再试图恢复原主服务器
PHP操作redis服务器
安装好php的redis扩展后(具体可参考前面的文章 Linux下php安装Redis扩展的方法 http://www.jb51.net/article/99775.htm),就可以直接使用redis的类函数库了。
如下是典型的redis应用。
$redis=new Redis(); //实例化一个Redis对象 $redis->connect('host',port); //连接redis服务器 $redis->auth('password'); //用密码认证 $redis->set($key,$value[,$expire_time]);//设置一个值 $content=$redis->get($key); //获取值
相关推荐:
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!