PHP操作Redis实例讲解

小云云
小云云原创
2023-03-20 20:06:011421浏览

一、概念

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

二、Reids的安装与使用

1、安装:Linux系统可以通过官网地址:http://redis.io/download下载源码包进行编译安装
2、启动Redis服务命令:
(1)redis-server
(2)service redisd start
3、Redis的常用命令使用:
(1)连接:redis-cli -h <Redis所在服务器host> -p <Redis所用端口> -a <可选,连接Redis的密码>
(2)测试是否可用:输入PING,返回PONG响应
(3)可通过“SET key value”来设置key和value值;
(4)通过“GET KEY”获取Key对应的Value值。

三、PHP常用的操作Redis的方法

1、PHP自带了Redis类,用于作为操作Redis的扩展,因此可以通过该类进行连接:
$redis = new Redis();
$redis->connect('<host>',<端口>);
$redis->auth('<可选,密码>');

2、通常情况下,由于Redis支持string,hash,list,set及zset五种数据类型,Redis在开发中时常被用作缓存和队列两种服务:
(1)Redis用作缓存的PHP示例:

 $redis->set(<key>,<value>); //设置key和value的键值对
 $redis->get(<key>);//获取Key对应的Value值
 (2)Redis用作锁的操作:
 $redis->setnx(<key>,<value>); //设置key和value的键值对,如果key的value已经存在则不操作
 $redis->get(<key>);//获取Key对应的Value值
 (3)Redis用作队列的PHP示例:
 $redis->lpush(<key>,<value>);//从列表头部插入数据,列表名为key
 $redis->lpop(<key>);//从列表尾部去除并移除数据,列表名为key

四、PHP操作Redis方法汇总

除了上述的常用操作之外,PHP还支持Redis使用的各种数据类型操作,如mset、hset等。

五、Reids的特性与性能

1、Redis是一个速度非常快的非关系数据库,它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能;
2、当数据依赖不再需要,Redis这种基于内存的性质,与在执行一个事务时将每个变化都写入硬盘的数据库系统相比就显得执行效率非常高,写与读操作速度没有明显差别;

3、与其他数据存储方式的对比:


4、使用Redis的优势:
(1)有memcached使用经验的读者可能知道,用户只能用APPEND命令将数据添加到已有字符串的末尾。memcached的文档中声明,可以用APPEND命令来管理元素列表。这很好!用户可以将元素追加到一个字符串的末尾,并将那个字符串当作列表来使用。但随后如何删除这些元素呢?memcached采用的办法是采用黑名单(blacklist)来隐藏列表里面的元素,从而避免对元素执行读取、更新、写入(或者数据库请求和memcached写入)等操作。相反地,Redis的LIST和SET允许用户直接添加或者删除元素。

(2)使用Redis代替memcached可以解决这个问题以及其他问题,不仅可以让代码变得更简短、更易懂、更易维护,而且还可以使代码的运行速度更快(因为用户不需要通过读取数据库来更新数据)。除此之外,在其他许多情况下,Redis的效率和易用性也比关系数据库要好得多。

相关推荐:

PHP如何操作Redis实例分享

php操作redis的常用方法总结

PHP操作Redis详解案例

以上就是PHP操作Redis实例讲解的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。