redis php 书,PHP-redis中文文档

Redis::__construct构造函数

$redis = new Redis();

connect, open 链接redis服务

参数

host: string,服务地址

port: int,端口号

timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)

注: 在redis.conf中也有时间,默认为300

pconnect, popen 不会主动关闭的链接

参考上面

setOption 设置redis模式

getOption 查看redis设置的模式

ping 查看连接状态

get 得到某个key的值(string值)

如果该key不存在,return false

10年架构师领你架构-成长之路-(附面试题(含答案))

set 写入key 和 value(string值)

如果写入成功,return ture

setex 带生存时间的写入值

$redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.

setnx 判断是否重复的,写入值

math?formula=redis-%3Esetnx('key'%2C%20'value')%3Bredis->setnx('key', 'value');

delete 删除指定key的值

返回已经删除key的个数(长整数)

math?formula=redis-%3Edelete('key1'%2C%20'key2')%3Bredis->delete(array('key3', 'key4', 'key5'));

ttl

得到一个key的生存时间

persist

移除生存时间到期的key

如果key到期 true 如果不到期 false

mset (redis版本1.1以上才可以用)

同时给多个key赋值

$redis->mset(array('key0' => 'value0', 'key1' => 'value1'));

multi, exec, discard

进入或者退出事务模式

参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI

Redis::MULTI:将多个操作当成一个事务执行

Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证

discard:删除一个事务

返回值

multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。

感谢大家一直来支持,这是我准备的1000粉丝福利

watch, unwatch (代码测试后,不能达到所说的效果)

监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)

unwatch 取消被这个程序监测的所有key

参数,一对key的列表

math?formula=redis-%3Ewatch('x')%3Bret = $redis->multi() ->incr('x') ->exec();

subscribe *

方法回调。注意,该方法可能在未来里发生改变

publish *

发表内容到某一个通道。注意,该方法可能在未来里发生改变

exists

判断key是否存在。存在 true 不在 false

incr, incrBy

key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值

math?formula=redis-%3Eincr('key1')%3Bredis->incrBy('key1', 10);

decr, decrBy

做减法,使用方法同incr

getMultiple

传参

由key组成的数组

返回参数

如果key存在返回value,不存在返回false

math?formula=redis-%3Eset('key1'%2C%20'value1')%3Bredis->set('key2', 'value2');

math?formula=redis-%3Eset('key3'%2C%20'value3')%3Bredis->getMultiple(array('key1', 'key2', 'key3'));

math?formula=redis-%3ElRem('key1'%2C%20'A'%2C%202)%3Bredis->lRange('key1', 0, -1);

list相关操作

lPush

math?formula=redis-%3ElPush(key%2C%20value)%3B%20%E5%9C%A8%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84list%E5%B7%A6%E8%BE%B9%EF%BC%88%E5%A4%B4%EF%BC%89%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%B8%AA%E5%80%BC%E4%B8%BAvalue%E7%9A%84%20%E5%85%83%E7%B4%A0%20rPushredis->rPush(key, value);

在名称为key的list右边(尾)添加一个值为value的 元素

lPushx/rPushx

math?formula=redis-%3ElPushx(key%2C%20value)%3B%20%E5%9C%A8%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84list%E5%B7%A6%E8%BE%B9(%E5%A4%B4)%2F%E5%8F%B3%E8%BE%B9%EF%BC%88%E5%B0%BE%EF%BC%89%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%B8%AA%E5%80%BC%E4%B8%BAvalue%E7%9A%84%E5%85%83%E7%B4%A0%2C%E5%A6%82%E6%9E%9Cvalue%E5%B7%B2%E7%BB%8F%E5%AD%98%E5%9C%A8%EF%BC%8C%E5%88%99%E4%B8%8D%E6%B7%BB%E5%8A%A0%20lPop%2FrPopredis->lPop('key');

输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素

blPop/brPop

$redis->blPop('key1', 'key2', 10);

lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作

lSize

math?formula=redis-%3ElSize('key')%3B%20%E8%BF%94%E5%9B%9E%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84list%E6%9C%89%E5%A4%9A%E5%B0%91%E4%B8%AA%E5%85%83%E7%B4%A0%20lIndex%2C%20lGetredis->lGet('key', 0);

返回名称为key的list中index位置的元素

lSet

math?formula=redis-%3ElSet('key'%2C%200%2C%20'X')%3B%20%E7%BB%99%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84list%E4%B8%ADindex%E4%BD%8D%E7%BD%AE%E7%9A%84%E5%85%83%E7%B4%A0%E8%B5%8B%E5%80%BC%E4%B8%BAvalue%20lRange%2C%20lGetRangeredis->lRange('key1', 0, -1);

返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)

lTrim, listTrim

math?formula=redis-%3ElTrim('key'%2C%20start%2C%20end)%3B%20%E6%88%AA%E5%8F%96%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84list%EF%BC%8C%E4%BF%9D%E7%95%99start%E8%87%B3end%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%83%E7%B4%A0%20lRem%2C%20lRemoveredis->lRem('key', 'A', 2);

删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素

lInsert

在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1

math?formula=redis-%3Edelete('key1')%3Bredis->lInsert('key1', Redis::AFTER, 'A', 'X');

math?formula=redis-%3ElPush('key1'%2C%20'A')%3Bredis->lPush('key1', 'B');

math?formula=redis-%3ElPush('key1'%2C%20'C')%3Bredis->lInsert('key1', Redis::BEFORE, 'C', 'X');

math?formula=redis-%3ElRange('key1'%2C%200%2C%20-1)%3Bredis->lInsert('key1', Redis::AFTER, 'C', 'Y');

math?formula=redis-%3ElRange('key1'%2C%200%2C%20-1)%3Bredis->lInsert('key1', Redis::AFTER, 'W', 'value');

rpoplpush

返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

math?formula=redis-%3Edelete('x'%2C%20'y')%3Bredis->lPush('x', 'abc');

math?formula=redis-%3ElPush('x'%2C%20'def')%3Bredis->lPush('y', '123');

math?formula=redis-%3ElPush('y'%2C%20'456')%3B%20%2F%2F%20move%20the%20last%20of%20x%20to%20the%20front%20of%20y.%20var_dump(redis->rpoplpush('x', 'y'));

var_dump(

math?formula=redis-%3ElRange('x'%2C%200%2C%20-1))%3B%20var_dump(redis->lRange('y', 0, -1));

string(3) "abc"

array(1) { [0]=> string(3) "def" }

array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }

大厂2000道面试题(含答案)

sRem, sRemove

删除名称为key的set中的元素value

math?formula=redis-%3EsAdd('key1'%20%2C%20'set1')%3Bredis->sAdd('key1' , 'set2');

math?formula=redis-%3EsAdd('key1'%20%2C%20'set3')%3Bredis->sRem('key1', 'set2');

sMove

将value元素从名称为srckey的集合移到名称为dstkey的集合

math?formula=redis-%3EsMove(seckey%2C%20dstkey%2C%20value)%3B%20sIsMember%2C%20sContains%20%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84%E9%9B%86%E5%90%88%E4%B8%AD%E6%9F%A5%E6%89%BE%E6%98%AF%E5%90%A6%E6%9C%89value%E5%85%83%E7%B4%A0%EF%BC%8C%E6%9C%89ture%20%E6%B2%A1%E6%9C%89%20falseredis->sIsMember(key, value);

sCard, sSize

返回名称为key的set的元素个数

sPop

随机返回并删除名称为key的set中一个元素

sRandMember

随机返回名称为key的set中一个元素,不删除

sInter

求交集

sInterStore

求交集并将交集保存到output的集合

math?formula=redis-%3EsInterStore('output'%2C%20'key1'%2C%20'key2'%2C%20'key3')%20sUnion%20%E6%B1%82%E5%B9%B6%E9%9B%86redis->sUnion('s0', 's1', 's2');

s0,s1,s2 同时求并集

sUnionStore

求并集并将并集保存到output的集合

math?formula=redis-%3EsUnionStore('output'%2C%20'key1'%2C%20'key2'%2C%20'key3')%EF%BC%9B%20sDiff%20%E6%B1%82%E5%B7%AE%E9%9B%86%20sDiffStore%20%E6%B1%82%E5%B7%AE%E9%9B%86%E5%B9%B6%E5%B0%86%E5%B7%AE%E9%9B%86%E4%BF%9D%E5%AD%98%E5%88%B0output%E7%9A%84%E9%9B%86%E5%90%88%20sMembers%2C%20sGetMembers%20%E8%BF%94%E5%9B%9E%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84set%E7%9A%84%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0%20sort%20%E6%8E%92%E5%BA%8F%EF%BC%8C%E5%88%86%E9%A1%B5%E7%AD%89%20%E5%8F%82%E6%95%B0%20'by'%20%3D%3E%20'some_pattern_*'%2C%20'limit'%20%3D%3E%20array(0%2C%201)%2C%20'get'%20%3D%3E%20'some_other_pattern_*'%20or%20an%20array%20of%20patterns%2C%20'sort'%20%3D%3E%20'asc'%20or%20'desc'%2C%20'alpha'%20%3D%3E%20TRUE%2C%20'store'%20%3D%3E%20'external-key'%20%E4%BE%8B%E5%AD%90redis->delete('s');

math?formula=redis-%3Esadd('s'%2C%205)%3Bredis->sadd('s', 4);

math?formula=redis-%3Esadd('s'%2C%202)%3Bredis->sadd('s', 1);

math?formula=redis-%3Esadd('s'%2C%203)%3B%20var_dump(redis->sort('s')); // 1,2,3,4,5

var_dump(

math?formula=redis-%3Esort('s'%2C%20array('sort'%20%3D%3E%20'desc')))%3B%20%2F%2F%205%2C4%2C3%2C2%2C1%20var_dump(redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5

string命令

getSet

返回原来key中的值,并将value写入key

math?formula=redis-%3Eset('x'%2C%20'42')%3BexValue =

math?formula=redis-%3EgetSet('x'%2C%20'lol')%3B%20%2F%2F%20return%20'42'%2C%20replaces%20x%20by%20'lol'newValue =

math?formula=redis-%3Eget('x')'%20%2F%2F%20return%20'lol'%20append%20string%EF%BC%8C%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84string%E7%9A%84%E5%80%BC%E5%9C%A8%E5%90%8E%E9%9D%A2%E5%8A%A0%E4%B8%8Avalueredis->set('key', 'value1');

math?formula=redis-%3Eappend('key'%2C%20'value2')%3Bredis->get('key');

getRange (方法不存在)

返回名称为key的string中start至end之间的字符

math?formula=redis-%3Eset('key'%2C%20'string%20value')%3Bredis->getRange('key', 0, 5);

math?formula=redis-%3EgetRange('key'%2C%20-5%2C%20-1)%3B%20setRange%20%EF%BC%88%E6%96%B9%E6%B3%95%E4%B8%8D%E5%AD%98%E5%9C%A8%EF%BC%89%20%E6%94%B9%E5%8F%98key%E7%9A%84string%E4%B8%ADstart%E8%87%B3end%E4%B9%8B%E9%97%B4%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%BAvalueredis->set('key', 'Hello world');

math?formula=redis-%3EsetRange('key'%2C%206%2C%20%22redis%22)%3Bredis->get('key');

strlen

得到key的string的长度

$redis->strlen('key');

getBit/setBit

返回2进制信息

zset(sorted set)操作相关

zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。

math?formula=redis-%3EzAdd('key'%2C%201%2C%20'val1')%3Bredis->zAdd('key', 0, 'val0');

math?formula=redis-%3EzAdd('key'%2C%205%2C%20'val5')%3Bredis->zRange('key', 0, -1); // array(val0, val1, val5)

zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素

math?formula=redis-%3EzAdd('key1'%2C%200%2C%20'val0')%3Bredis->zAdd('key1', 2, 'val2');

math?formula=redis-%3EzAdd('key1'%2C%2010%2C%20'val10')%3Bredis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);

zDelete, zRem

zRem(key, member) :删除名称为key的zset中的元素member

math?formula=redis-%3EzAdd('key'%2C%200%2C%20'val0')%3Bredis->zAdd('key', 2, 'val2');

math?formula=redis-%3EzAdd('key'%2C%2010%2C%20'val10')%3Bredis->zDelete('key', 'val2');

$redis->zRange('key', 0, -1);

zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出

math?formula=redis-%3EzAdd('key'%2C%200%2C%20'val0')%3Bredis->zAdd('key', 2, 'val2');

math?formula=redis-%3EzAdd('key'%2C%2010%2C%20'val10')%3Bredis->zRevRange('key', 0, -1); // with scores

math?formula=redis-%3EzRevRange('key'%2C%200%2C%20-1%2C%20true)%3B%20zRangeByScore%2C%20zRevRangeByScoreredis->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

math?formula=redis-%3EzRemRangeByScore('key'%2C%20star%2C%20end)%3B%20%E5%88%A0%E9%99%A4%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84zset%E4%B8%ADscore%20%3E%3D%20star%E4%B8%94score%20%3C%3D%20end%E7%9A%84%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0%EF%BC%8C%E8%BF%94%E5%9B%9E%E5%88%A0%E9%99%A4%E4%B8%AA%E6%95%B0%20zSize%2C%20zCard%20%E8%BF%94%E5%9B%9E%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84zset%E7%9A%84%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0%E7%9A%84%E4%B8%AA%E6%95%B0%20zScoreredis->zScore(key, val2);

返回名称为key的zset中元素val2的score

zRank, zRevRank

math?formula=redis-%3EzRevRank(key%2C%20val)%3B%20%E8%BF%94%E5%9B%9E%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84zset%EF%BC%88%E5%85%83%E7%B4%A0%E5%B7%B2%E6%8C%89score%E4%BB%8E%E5%B0%8F%E5%88%B0%E5%A4%A7%E6%8E%92%E5%BA%8F%EF%BC%89%E4%B8%ADval%E5%85%83%E7%B4%A0%E7%9A%84rank%EF%BC%88%E5%8D%B3index%EF%BC%8C%E4%BB%8E0%E5%BC%80%E5%A7%8B%EF%BC%89%EF%BC%8C%E8%8B%A5%E6%B2%A1%E6%9C%89val%E5%85%83%E7%B4%A0%EF%BC%8C%E8%BF%94%E5%9B%9E%E2%80%9Cnull%E2%80%9D%E3%80%82zRevRank%20%E6%98%AF%E4%BB%8E%E5%A4%A7%E5%88%B0%E5%B0%8F%E6%8E%92%E5%BA%8F%20zIncrByredis->zIncrBy('key', increment, 'member');

如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

大厂2000道面试题(含答案)

PHP面试题汇总,看完这些面试题助力你面试成功,工资必有20-25K

点击与我交流企鹅群.

zUnion/zInter

参数

keyOutput

arrayZSetKeys

arrayWeights

aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.

对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

Hash操作

hSet

math?formula=redis-%3EhSet('h'%2C%20'key1'%2C%20'hello')%3B%20%E5%90%91%E5%90%8D%E7%A7%B0%E4%B8%BAh%E7%9A%84hash%E4%B8%AD%E6%B7%BB%E5%8A%A0%E5%85%83%E7%B4%A0key1%E2%80%94%3Ehello%20hGetredis->hGet('h', 'key1');

返回名称为h的hash中key1对应的value(hello)

hLen

math?formula=redis-%3EhLen('h')%3B%20%E8%BF%94%E5%9B%9E%E5%90%8D%E7%A7%B0%E4%B8%BAh%E7%9A%84hash%E4%B8%AD%E5%85%83%E7%B4%A0%E4%B8%AA%E6%95%B0%20hDelredis->hDel('h', 'key1');

删除名称为h的hash中键为key1的域

hKeys

math?formula=redis-%3EhKeys('h')%3B%20%E8%BF%94%E5%9B%9E%E5%90%8D%E7%A7%B0%E4%B8%BAkey%E7%9A%84hash%E4%B8%AD%E6%89%80%E6%9C%89%E9%94%AE%20hValsredis->hVals('h')

返回名称为h的hash中所有键对应的value

hGetAll

math?formula=redis-%3EhGetAll('h')%3B%20%E8%BF%94%E5%9B%9E%E5%90%8D%E7%A7%B0%E4%B8%BAh%E7%9A%84hash%E4%B8%AD%E6%89%80%E6%9C%89%E7%9A%84%E9%94%AE%EF%BC%88field%EF%BC%89%E5%8F%8A%E5%85%B6%E5%AF%B9%E5%BA%94%E7%9A%84value%20hExistsredis->hExists('h', 'a');

名称为h的hash中是否存在键名字为a的域

hIncrBy

math?formula=redis-%3EhIncrBy('h'%2C%20'x'%2C%202)%3B%20%E5%B0%86%E5%90%8D%E7%A7%B0%E4%B8%BAh%E7%9A%84hash%E4%B8%ADx%E7%9A%84value%E5%A2%9E%E5%8A%A02%20hMsetredis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));

向名称为key的hash中批量添加元素

hMGet

$redis->hmGet('h', array('field1', 'field2'));

返回名称为h的hash中field1,field2对应的value

redis 操作相关

flushDB

清空当前数据库

flushAll

清空所有数据库

randomKey

随机返回key空间的一个key

math?formula=key%20%3Dredis->randomKey();

select

选择一个数据库

move

转移一个key到另外一个数据库

math?formula=redis-%3Eselect(0)%3B%20%2F%2F%20switch%20to%20DB%200redis->set('x', '42'); // write 42 to x

math?formula=redis-%3Emove('x'%2C%201)%3B%20%2F%2F%20move%20to%20DB%201redis->select(1); // switch to DB 1

math?formula=redis-%3Eget('x')%3B%20%2F%2F%20will%20return%2042%20rename%2C%20renameKey%20%E7%BB%99key%E9%87%8D%E5%91%BD%E5%90%8Dredis->set('x', '42');

math?formula=redis-%3Erename('x'%2C%20'y')%3Bredis->get('y'); // → 42

math?formula=redis-%3Eget('x')%3B%20%2F%2F%20%E2%86%92%20%60FALSE%60%20renameNx%20%E4%B8%8Eremane%E7%B1%BB%E4%BC%BC%EF%BC%8C%E4%BD%86%E6%98%AF%EF%BC%8C%E5%A6%82%E6%9E%9C%E9%87%8D%E6%96%B0%E5%91%BD%E5%90%8D%E7%9A%84%E5%90%8D%E5%AD%97%E5%B7%B2%E7%BB%8F%E5%AD%98%E5%9C%A8%EF%BC%8C%E4%B8%8D%E4%BC%9A%E6%9B%BF%E6%8D%A2%E6%88%90%E5%8A%9F%20setTimeout%2C%20expire%20%E8%AE%BE%E5%AE%9A%E4%B8%80%E4%B8%AAkey%E7%9A%84%E6%B4%BB%E5%8A%A8%E6%97%B6%E9%97%B4%EF%BC%88s%EF%BC%89redis->setTimeout('x', 3);

expireAt

key存活到一个unix时间戳时间

math?formula=redis-%3EexpireAt('x'%2C%20time()%20%2B%203)%3B%20keys%2C%20getKeys%20%E8%BF%94%E5%9B%9E%E6%BB%A1%E8%B6%B3%E7%BB%99%E5%AE%9Apattern%E7%9A%84%E6%89%80%E6%9C%89keykeyWithUserPrefix =

math?formula=redis-%3Ekeys('user*')%3B%20dbSize%20%E6%9F%A5%E7%9C%8B%E7%8E%B0%E5%9C%A8%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9C%89%E5%A4%9A%E5%B0%91keycount =

math?formula=redis-%3EdbSize()%3B%20auth%20%E5%AF%86%E7%A0%81%E8%AE%A4%E8%AF%81redis->auth('foobared');

bgrewriteaof

使用aof来进行数据库持久化

math?formula=redis-%3Ebgrewriteaof()%3B%20slaveof%20%E9%80%89%E6%8B%A9%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8redis->slaveof('10.0.1.7', 6379);

save

将数据同步保存到磁盘

bgsave

将数据异步保存到磁盘

lastSave

返回上次成功将数据保存到磁盘的Unix时戳

info

返回redis的版本信息等详情

type

返回key的类型值

string: Redis::REDIS_STRING

set: Redis::REDIS_SET

list: Redis::REDIS_LIST

zset: Redis::REDIS_ZSET

hash: Redis::REDIS_HASH

other: Redis::REDIS_NOT_FOUND

喜欢我的文章就关注我吧,持续更新中.....

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以点击进入暗号:知乎。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值