php发展

首页 » 常识 » 诊断 » php操作redis大全
TUhjnbcbe - 2025/5/1 16:43:00

php操作redis

setex带生存时间的写入值$redis-setex(key,,value);setnx判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1$redis-setnx(key,value);返回已经删除key$redis-delete(key1);成功返回1失败返回0$redis-delete(key1,key2);删除两个键成功返回1失败返回0查询生存时间$redis-ttl(key1);持久化的返回-1,有生存时间的返回时间(单位秒)同时给多个key赋值,同时设置key0和key1$redis-mset(array(key0=value0,key1=value1));key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值$redis-incr(key1);$redis-incrBy(key1,10);减法跟加法一样$redis-decr("key1");减少1$redis-decrBy("key1",5)减少5list相关操作,连表操作lPush$redis-lPush("list","");$id=$redis-lpush(list,HHHHHHH);echo$id;返回链表的元素个数$redi-lrange(list,0,-1);返回全部数据,数组形式$redis-lrange(list,0,2);返回连表0-2坐标的三个元素lPushx/rPushx$redis-lPushx(key,value);在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加$redis-lpop(list);输出链表最左边的ksy的值,输出后删除掉这个key$redis-rpop(list);输出链表最右边的ksy的值,输出后删除掉这个key$redis-lset(list,7,"update");修改坐标为7的值,成功返回1集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序sadds1zhangsansadds1lisisadds1wangwusaddt1yangxingyisaddt1lileisaddt1zhangsansmemberss1s1的所有集合内容sdiffs1t1s1有的,t1没有的,差集$redis-sinter(s1,t1);返回s1和t1两个集合都有的,数组形式scards1返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的spop抽奖场景,返回集合里面随机的数spops1默认返回1个,返回后就删除这个数,中奖了就不能再中了$i=$redis-spop(s1);var_dump($i);返回一个数,返回后删除这个数$i=$redis-spop(s1,2);var_dump($i);不能返回两个的,提示错误的随机返回集合里面的一个元素,但不删除,重复中奖$i=$redis-srandmember(s1);echo$i;sismembers1zhangsan查询张三在不在集合里面,在1,不在false$i=$redis-sismember(s1,zhangsan2);echo$i;在1,不在falsezaddkey2value有序集合zaddy11zhangsan;zaddy13lisi;zaddy12wangwu;zrangey10-1;排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi$i=$redis-zrange(y1,0,-1);var_dump($i);返回数组,键值不是插入时候给的键,是从0开始的新键zrevrangey10-1;反转排序,插入的时候键值越高,排序越优先zcardy1;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的无序就scard,有序就zcard,有z没有ssInterStore求交集并将交集保存到output的集合$redis-sInterStore(output,key1,key2,key3)Hash操作hSet$redis-hSet(h,key1,hello);向名称为h的hash中添加元素key1—hellohGet$redis-hGet(h,key1);返回名称为h的hash中key1对应的value(hello)hLen$redis-hLen(h);返回名称为h的hash中元素个数hDel$redis-hDel(h,key1);删除名称为h的hash中键为key1的域hKeys$redis-hKeys(h);返回名称为key的hash中所有键hVals$redis-hVals(h)返回名称为h的hash中所有键对应的valuehGetAll$redis-hGetAll(h);返回名称为h的hash中所有的键(field)及其对应的valuehExists$redis-hExists(h,a);名称为h的hash中是否存在键名字为a的域hIncrBy$redis-hIncrBy(h,x,2);将名称为h的hash中x的value增加2hMset$redis-hMset(user:1,array(name=Joe,salary=));向名称为key的hash中批量添加元素hMGet$redis-hmGet(h,array(field1,field2));返回名称为h的hash中field1,field2对应的valueredis操作相关flushDB清空当前数据库flushAll清空所有数据库randomKey随机返回key空间的一个key$key=$redis-randomKey();select选择一个数据库move转移一个key到另外一个数据库$redis-select(0);//switchtoDB0$redis-set(x,42);//write42tox$redis-move(x,1);//movetoDB1$redis-select(1);//switchtoDB1$redis-get(x);//willreturn42rename,renameKey给key重命名$redis-set(x,42);$redis-rename(x,y);$redis-get(y);//→42$redis-get(x);//→`FALSE`renameNx与remane类似,但是,如果重新命名的名字已经存在,不会替换成功setTimeout,expire设定一个key的活动时间(s)$redis-setTimeout(x,3);expireAtkey存活到一个unix时间戳时间$redis-expireAt(x,time()+3);keys,getKeys返回满足给定pattern的所有key$keyWithUserPrefix=$redis-keys(user*);dbSize查看现在数据库有多少key$count=$redis-dbSize();auth密码认证$redis-auth(foobared);bgrewriteaof使用aof来进行数据库持久化$redis-bgrewriteaof();slaveof选择从服务器$redis-slaveof(10.0.1.7,);save将数据同步保存到磁盘bgsave将数据异步保存到磁盘lastSave返回上次成功将数据保存到磁盘的Unix时戳info返回redis的版本信息等详情Redis::__construct构造函数$redis=newRedis();connect,open链接redis服务参数host:string,服务地址port:int,端口号timeout:float,链接时长(可选,默认为0,不限链接时间)注:在redis.conf中也有时间,默认为pconnect,popen不会主动关闭的链接参考上面setOption设置redis模式getOption查看redis设置的模式ping查看连接状态get得到某个key的值(string值)如果该key不存在,returnfalseset写入key和value(string值)如果写入成功,returnturesetex带生存时间的写入值$redis-setex(key,,value);//setskey→value,with1hTTL.setnx判断是否重复的,写入值$redis-setnx(key,value);$redis-setnx(key,value);delete删除指定key的值返回已经删除key的个数(长整数)$redis-delete(key1,key2);$redis-delete(array(key3,key4,key5));ttl得到一个key的生存时间persist移除生存时间到期的key如果key到期true如果不到期falsemset(redis版本1.1以上才可以用)同时给多个key赋值$redis-mset(array(key0=value0,key1=value1));multi,exec,discard进入或者退出事务模式参数可选Redis::MULTI或Redis::PIPELINE.默认是Redis::MULTIRedis::MULTI:将多个操作当成一个事务执行Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证discard:删除一个事务返回值multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。watch,unwatch(代码测试后,不能达到所说的效果)监测一个key的值是否被其它的程序更改。如果这个key在watch和exec(方法)间被修改,这个MULTI/EXEC事务的执行将失败(returnfalse)unwatch取消被这个程序监测的所有key参数,一对key的列表$redis-watch(x);$ret=$redis-multi()-incr(x)-exec();subscribe*方法回调。注意,该方法可能在未来里发生改变publish*发表内容到某一个通道。注意,该方法可能在未来里发生改变exists判断key是否存在。存在true不在falseincr,incrBykey中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值$redis-incr(key1);$redis-incrBy(key1,10);decr,decrBy做减法,使用方法同incrgetMultiple传参由key组成的数组返回参数如果key存在返回value,不存在返回false$redis-set(key1,value1);$redis-set(key2,value2);$redis-set(key3,value3);$redis-getMultiple(array(key1,key2,key3));$redis-lRem(key1,A,2);$redis-lRange(key1,0,-1);list相关操作lPush$redis-lPush(key,value);在名称为key的list左边(头)添加一个值为value的元素rPush$redis-rPush(key,value);在名称为key的list右边(尾)添加一个值为value的元素lPushx/rPushx$redis-lPushx(key,value);在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加lPop/rPop$redis-lPop(key);输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素blPop/brPop$redis-blPop(key1,key2,10);lpop命令的block版本。即当timeout为0时,若遇到名称为keyi的list不存在或该list为空,则命令结束。如果timeout0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作lSize$redis-lSize(key);返回名称为key的list有多少个元素lIndex,lGet$redis-lGet(key,0);返回名称为key的list中index位置的元素lSet$redis-lSet(key,0,X);给名称为key的list中index位置的元素赋值为valuelRange,lGetRange$redis-lRange(key1,0,-1);返回名称为key的list中start至end之间的元素(end为-1,返回所有)lTrim,listTrim$redis-lTrim(key,start,end);截取名称为key的list,保留start至end之间的元素lRem,lRemove$redis-lRem(key,A,2);删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count0从头至尾删除count个值为value的元素,count0从尾到头删除

count

个值为value的元素lInsert在名称为为key的list中,找到值为pivot的value,并根据参数Redis::BEFORE

Redis::AFTER,来确定,newvalue是放在pivot的前面,或者后面。如果key不存在,不会插入,如果pivot不存在,return-1$redis-delete(key1);$redis-lInsert(key1,Redis::AFTER,A,X);$redis-lPush(key1,A);$redis-lPush(key1,B);$redis-lPush(key1,C);$redis-lInsert(key1,Redis::BEFORE,C,X);$redis-lRange(key1,0,-1);$redis-lInsert(key1,Redis::AFTER,C,Y);$redis-lRange(key1,0,-1);$redis-lInsert(key1,Redis::AFTER,W,value);rpoplpush返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部$redis-delete(x,y);$redis-lPush(x,abc);$redis-lPush(x,def);$redis-lPush(y,);$redis-lPush(y,);//movethelastofxtothefrontofy.var_dump($redis-rpoplpush(x,y));var_dump($redis-lRange(x,0,-1));var_dump($redis-lRange(y,0,-1));string(3)"abc"array(1){[0]=string(3)"def"}array(3){[0]=string(3)"abc"[1]=string(3)""[2]=string(3)""}SET操作相关sAdd向名称为key的set中添加元素value,如果value存在,不写入,returnfalse$redis-sAdd(key,value);sRem,sRemove删除名称为key的set中的元素value$redis-sAdd(key1,set1);$redis-sAdd(key1,set2);$redis-sAdd(key1,set3);$redis-sRem(key1,set2);sMove将value元素从名称为srckey的集合移到名称为dstkey的集合$redis-sMove(seckey,dstkey,value);sIsMember,sContains名称为key的集合中查找是否有value元素,有ture没有false$redis-sIsMember(key,value);sCard,sSize返回名称为key的set的元素个数sPop随机返回并删除名称为key的set中一个元素sRandMember随机返回名称为key的set中一个元素,不删除sInter求交集sInterStore求交集并将交集保存到output的集合$redis-sInterStore(output,key1,key2,key3)sUnion求并集$redis-sUnion(s0,s1,s2);s0,s1,s2同时求并集sUnionStore求并集并将并集保存到output的集合$redis-sUnionStore(output,key1,key2,key3);sDiff求差集sDiffStore求差集并将差集保存到output的集合sMembers,sGetMembers返回名称为key的set的所有元素sort排序,分页等参数by=some_pattern_*,limit=array(0,1),get=some_other_pattern_*oranarrayofpatterns,sort=ascordesc,alpha=TRUE,store=external-key例子$redis-delete(s);$redis-sadd(s,5);$redis-sadd(s,4);$redis-sadd(s,2);$redis-sadd(s,1);$redis-sadd(s,3);var_dump($redis-sort(s));//1,2,3,4,5var_dump($redis-sort(s,array(sort=desc)));//5,4,3,2,1var_dump($redis-sort(s,array(sort=desc,store=out)));//(int)5string命令getSet返回原来key中的值,并将value写入key$redis-set(x,42);$exValue=$redis-getSet(x,lol);//return42,replacesxbylol$newValue=$redis-get(x)//returnlolappendstring,名称为key的string的值在后面加上value$redis-set(key,value1);$redis-append(key,value2);$redis-get(key);getRange(方法不存在)返回名称为key的string中start至end之间的字符$redis-set(key,stringvalue);$redis-getRange(key,0,5);$redis-getRange(key,-5,-1);setRange(方法不存在)改变key的string中start至end之间的字符为value$redis-set(key,Helloworld);$redis-setRange(key,6,"redis");$redis-get(key);strlen得到key的string的长度$redis-strlen(key);getBit/setBit返回2进制信息zset(sortedset)操作相关zAdd(key,score,member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。$redis-zAdd(key,1,val1);$redis-zAdd(key,0,val0);$redis-zAdd(key,5,val5);$redis-zRange(key,0,-1);//array(val0,val1,val5)zRange(key,start,end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素$redis-zAdd(key1,0,val0);$redis-zAdd(key1,2,val2);$redis-zAdd(key1,10,val10);$redis-zRange(key1,0,-1);//withscores$redis-zRange(key1,0,-1,true);zDelete,zRemzRem(key,member):删除名称为key的zset中的元素member$redis-zAdd(key,0,val0);$redis-zAdd(key,2,val2);$redis-zAdd(key,10,val10);$redis-zDelete(key,val2);$redis-zRange(key,0,-1);zRevRange(key,start,end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores:是否输出socre的值,默认false,不输出$redis-zAdd(key,0,val0);$redis-zAdd(key,2,val2);$redis-zAdd(key,10,val10);$redis-zRevRange(key,0,-1);//withscores$redis-zRevRange(key,0,-1,true);zRangeByScore,zRevRangeByScore$redis-zRangeByScore(key,star,end,array(withscores,limit));返回名称为key的zset中score=star且score=end的所有元素zCount$redis-zCount(key,star,end);返回名称为key的zset中score=star且score=end的所有元素的个数zRemRangeByScore,zDeleteRangeByScore$redis-zRemRangeByScore(key,star,end);删除名称为key的zset中score=star且score=end的所有元素,返回删除个数zSize,zCard返回名称为key的zset的所有元素的个数zScore$redis-zScore(key,val2);返回名称为key的zset中元素val2的scorezRank,zRevRank$redis-zRevRank(key,val);返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank是从大到小排序zIncrBy$redis-zIncrBy(key,increment,member);如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为incrementzUnion/zInter参数keyOutputarrayZSetKeysarrayWeightsaggregateFunctionEither"SUM","MIN",or"MAX":definesthebehaviourtouseonduplicateentriesduringthezUnion.对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

1
查看完整版本: php操作redis大全