【PHP基础学习】—PHP操作Redis

前言

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。可支持多种编程语言对其进行操作。
作为一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。本文也会通过PHP对Reids的操作示例来详解Redis命令。

一、概念

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等,汇总表及其操作方法如可在我的资源中免费下载:http://download.csdn.net/download/dream_successor/10242940


五、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的效率和易用性也比关系数据库要好得多


猜你喜欢

转载自blog.csdn.net/dream_successor/article/details/79274497