PHP 操作 redis 手册

来源:互联网 发布:mac air 装单win详细 编辑:程序博客网 时间:2024/06/05 01:06

本文为网上查询资料,修改作为笔记记载,


为什么用 redis 不用 memcached?

memcached存放数据无法持久化(将数据写到硬盘中)。

redis数据也是存放到内存中,所以速度快。并且数据可以周期性写到硬盘中,Redis数据可以持久化。


Redis有五种数据类型

字符串(string)、list(链表)、set(集合)、zset(有序集合)、hash(哈希)


PHP操作redis

一、连接 

$redis = new Redis();

$redis->connect('127.0.0.1',6379,1);     //短链接,本地host,端口为6379,超过1秒放弃

$redis->pconnect('127.0.0.1',6379,1);   //长链接,本地host,端口为6379,超过1秒放弃

$redis->ping();  //检查是链接,返回 pong即是连接

$redis->select(0);  //选择redis库,0~15 共16个库,默认选择库是 0

$redis->close();//释放资源


二、string

$redis->set('test','aa');     //设置 键 key = 'test',值 value = 'aa'

$redis->get('test'); //获取 test 的 值

$redis->delete('test'); // 删除test 键

$redis->setnx('test','aa');//如果test键不存在,则设置,如果test键存在,则无效。

$redis->mset($arr); //传入$arr为数组,设置一个或多个键值

$redis->mget($arr);//传入$arr为数组,获取一个或多个值,以数组形式返回

$redis->getset($arr); //先获取值,再覆盖设置值 ,返回旧值


三、list

$redis->lpush('list','val');   //(增) 在列表list的表头增加一个值val 

$redis->rpush('list','val');   //(增) 在列表list的表尾增加一个值val

$redis->lpop('list');   //(删)  删除 并返回列表list 的表头一个值

$redis->rpop('list');   //(删) 删除 并返回列表list 的表尾一个值

$redis->ltrim('list',0,2);   //(删)只保留下标为0到第2个的值,其他删除

$redis->lrem('list','val',1)  //(删) 删除列表list 里面 的 val 值 1次

$redis->lset('list',2,'val') //(改) 将 列表list 下标为2的值改为 val

$redis->lindex('list',1);(查) 返回 列表 list 的下标为1 的值

$redis->lrange('list',0,3);(查)  以数组形式返回 列表 list 的下标为 0到3的值


四、setstring类型的无序集合。是通过hash table 实现的,添加、删除和查找的复杂度都是0(1)。

对集合我们可以取并集、交集、差集)

$redis->sadd('key','value1','value2','valuen');  //为key集合添加 多个或一个元素

$redis->smembers('key'); //返回集合key 所有元素

$redis->sinter('key1','key2','keyn');//返回所有给定集合的交集 

$redis->sunion('key1','key2','keyn');//返回所有给定集合的并集

$redis->sdiff('key1','key2','keyn');//返回所有给定集合的差集 

$redis->srandmember('key');//返回集合一个随机元素

$redis->srem('key','value1','value2');  //为key集合删除多个值或一个元素

$redis->spop('key') //移除并返回集合中的一个随机元素

$redis->sismember('key','member') //判断集合key是否有member元素


五、 zset(有序集合)

$redis->zAdd('key',1,'aa');  //在key集合添加与 1关联 元素aa ,集合元素不可重复,可一次添加多个 zAdd('key',1,'aa',2,'bb')

$redis->zrange('key',0,1); //获取集合元素,从 0 到 1

$redis->zdelete('key','aa');删除key集合里面的 aa元素

$redis->zRevRange('key',0,1,true); // 获取集合元素,从0位置 到 -1 位置,数组按照score降序处理 返回score关联数组

$redis->zRangeByScore('key',0,0.2); //获取score 在0到0.2的元素

$redis->zCount('key',1,10) //计算 score 1到10的元素

$redis->zRemRangeByScore('key',1,3); //删除Score区间 1到3

$redis->zRemRangeByRank('key',0,1); //删除下标 区间0到1

$redis->zSize('key'); //返回key有序集合 有多少个元素

$redis->zScore('key','a'); //返回key集合中 a元素对应的score值

$redis->zRange('key','a');//返回key集合中 a元素对应的下标值

$redis->zIncrBy('key',1.5,'a'); //将集合key中的元素a的score值加1.5

$redis->zUnion('union',array('key','key2')) //将集合key和key2合并于集合union,如有重复,则重复元素score值相加

$redis->zUnion('union',array('key',key2),arrar(4,2)); // 将key元素的score值乘4,key2元素score值乘2,然后合并,重 复元素则score相加

$redis->zUnion('union',array('key',key2),arrar(4,2),'MAX'); // 如有重复,则score取最大,也可以设置最小值MIN

$redis->zInter('new',array('k1','k2')); //取k1 k2 的交集于 new,安装score值排序,如元素种复,则score值相加

$redis->zInter('new',array('k1','k2'),array(4,2),'MAX'); //k1每个元素乘4,k2每个元素乘2,取交集 于new,重复元素则取最大值(也可MIN最小值)

五、哈希(Hash)

$redis->hSet('key','name','val);//为key添加 名字为name,值为 val

$redis->hMSet('key',array('aa'=>'aaa','bb'=>'bbb'));//批量设置添加

$redis->hSetNx('key','name','val');//为key添加 名字为name,值为 val ,存在则返回false

$redis->hGet('key','name');//获取key表的 name 里面的值

$redis->hMGet('key,array('aa','bb'));//批量获取name字段的值

$redis->hLen('key');//获取key表里面的字段数

$redis->hDel('key','name');//删除字段name

$redis->hKeys('key');//获取key表所有字段

$redis->hVals('key');//获取key表所有字段的值

$redis->hGetAll('key’);//获取key所有字段和值(关联数组)

$redis->hExists('key','name');//判断key是否含有name字段

$redis->hIncrBy('key','name',-2);//为key里面的字段name 的值 -2,如果非数组,则返回false

$redis->hIncrByFloat('key','name',-2.5);//为key里面的字段name 的值 -2.5(浮点数),如果非数组,则返回false





























$redis->zAdd('key',1,'aa');  //在key集合添加与 1关联 元素aa ,集合元素不可重复,可一次添加多个 zAdd('key',1,'aa',2,'bb')
原创粉丝点击