String 类型操作
string是redis最基本的类型,而且string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象
$redis->set(
'key',
'TK');
$redis->set(
'number',
'1');
$redis->setex(
'key',
5,
'TK');
$redis->psetex(
'key',
5000,
'TK');
$redis->setnx(
'key',
'XK');
$redis->delete(
'key'); 删除键值 可以传入数组
array(
'key1',
'key2')删除多个键
$redis->getSet(
'key',
'XK');
$ret =
$redis->multi()
->set(
'key1',
'val1')
->get(
'key1')
->setnx(
'key',
'val2')
->get(
'key2')
->exec();
$redis->watch(
'key');
如果KEY在调用watch()和exec()之间被修改,exec失败
function f($redis, $chan, $msg) {
switch(
$chan) {
case 'chan-1':
echo $msg;
break;
case 'chan-2':
echo $msg;
break;
case 'chan-2':
echo $msg;
break;
}
}
$redis->subscribe(
array(
'chan-1',
'chan-2',
'chan-3'),
'f');
$redis->publish(
'chan-1',
'hello, world!');
$redis->exists(
'key');
$redis->incr(
'number');
$redis->incrby(
'number',-
10);
$redis->incrByFloat(
'number', +/-
1.5);
$redis->decr(
'number');
$redis->decrBy(
'number',
10);
$mget =
$redis->mget(
array(
'number',
'key'));
$redis->mset(
array(
'key0' =>
'value0',
'key1' =>
'value1'));
$redis->msetnx(
array(
'key0' =>
'value0',
'key1' =>
'value1'));
$redis->append(
'key',
'-Smudge');
$redis->getRange(
'key',
0,
5);
$redis->getRange(
'key', -
6, -
1);
$redis->setRange(
'key',
0,
'Smudge');
有多少个字符替换多少位置,其中汉字占
2个位置
$redis->strlen(
'key');
$redis->getBit(
'key');
$redis->setBit(
'key');
list链表操作
$redis->delete(
'list-key');
$redis->lPush(
'list-key',
'A');
$redis->rPush(
'list-key',
'B');
$redis->lPushx(
'list-key',
'C');
$redis->rPushx(
'list-key',
'C');
$redis->lPop(
'list-key');
$redis->rPop(
'list-key');
$redis->blPop();
$redis->brPop();
$redis->lSize(
'list-key');
若不是链表或者不为空,则返回
false ,判断非链表
" === false "
$redis->lGet(
'list-key',-
1);
$redis->lSet(
'list-key',
0,
'X');
$redis->lRange(
'list-key',
0,
3);
$redis->lTrim(
'list-key',
0,
1);
$redis->lRem(
'list-key',
'C',
2);
$redis->lInsert(
'list-key', Redis::BEFORE,
'C',
'X');
链表不存在则插入失败 返回
0 若元素不存在返回-
1
$redis->rpoplpush(
'list-key',
'list-key2');
并且把这个元素从目标
LIST的顶部(左侧)压入目标
LIST。
$redis->brpoplpush();
即如果源
LIST为空,那么可以阻塞监听timeout的时间,如果有元素了则执行操作。
Set集合类型
set无序集合 不允许出现重复的元素 服务端可以实现多个 集合操作
$redis->sMembers(
'key');
$redis->sAdd(
'key' ,
'TK');
不存在添加成功 返回
true
$redis->sRem(
'key' ,
'TK');
$redis->sMove(
'key',
'key1',
'TK');
$redis->sIsMember(
'key',
'TK');
$redis->sCard(
'key');
$redis->sPop(
'key');
$redis->sRandMember(
'key');
$redis->sInter(
'key',
'key1');
$redis->sInterStore(
'store',
'key',
'key1');
$redis->sUnion(
'key',
'key1');
$redis->sUnionStore(
'store',
'key',
'key1');
$redis->sDiff(
'key',
'key1',
'key2');
Zset数据类型
**(stored set) 和 set 一样是字符串的集合,不同的是每个元素都会关联一个 double 类型的 score
redis的
list类型其实就是一个每个子元素都是string类型的双向链表。**
$redis->zAdd(
'tkey',
1,
'A');
同时集合元素不可以重复, 如果元素已经存在返回
0
$redis->zRange(
'tkey',
0,-
1);
$redis->zRange(
'tkey',
0,-
1,
true);
array([A] =>
0.01,[B] =>
0.02,[D] =>
0.03) 其中小数来自zAdd方法第二个参数
$redis->zDelete(
'tkey',
'B');
$redis->zRevRange(
'tkey',
0, -
1);
$redis->zRevRange(
'tkey',
0, -
1,
true);
$redis->zRangeByScore(
'tkey',
0,
0.2,
array(
'withscores' =>
true));
元素具有相同的score,那么会按照字典顺序排列 , withscores 控制返回关联数组
$redis->zRangeByScore(
'tkey',
0.1,
0.36,
array(
'withscores' =>
TRUE,
'limit' =>
array(
0,
1)));
$redis->zCount(
'tkey',
2,
10);
$redis->zRemRangeByScore(
'tkey',
1,
3);
$redis->zRemRangeByRank(
'tkey',
0,
1);
$redis->zSize(
'tkey');
$redis->zScore(
'tkey',
'A');
$redis->zRank(
'tkey',
'A');
z集合中元素按照score从低到高进行排列 ,即最低的score index索引为
0
$redis->zIncrBy(
'tkey',
2.5,
'A');
$redis->zUnion(
'union',
array(
'tkey',
'tkey1'));
返回新集合的元素个数, 如果元素A在tkey和tkey1都存在,则合并后的元素A的score相加
$redis->zUnion(
'ko2',
array(
'k1',
'k2'),
array(
5,
2));
k1每个元素score都要乘以
5 ,同理
1对应k2,k2每个元素score乘以
1
然后元素按照递增排序,默认相同的元素score(SUM)相加
$redis->zUnion(
'ko2',
array(
'k1',
'k2'),
array(
10,
2),
'MAX');
也可以设置MIN 取最小值
$redis->zInter(
'ko1',
array(
'k1',
'k2'));
如果集合元素相同,则新集合中的元素的score值相加
$redis->zInter(
'ko1',
array(
'k1',
'k2'),
array(
5,
1));
k1每个元素score都要乘以
5 ,同理
1对应k2,k2每个元素score乘以
1
,然后元素score按照递增排序,默认相同的元素score(SUM)相加
$redis->zInter(
'ko1',
array(
'k1',
'k2'),
array(
5,
1),
'MAX');
也可以设置MIN 取最小值
Hash数据类型
redis hash是一个string类型的field和value的映射表.它的添加,删除操作都是O(
1)(平均).hash特别适合用于存储对象。
$redis->hSet(
'h',
'name',
'TK');
$redis->hSetNx(
'h',
'name',
'TK');
$redis->hGet(
'h',
'name');
$redis->hLen(
'h');
$redis->hDel(
'h',
'email');
$redis->hKeys(
'h');
$redis->hVals(
'h');
$redis->hGetAll(
'h');
$redis->hExists(
'h',
'email');
$redis->hSet(
'h',
'age',
28);
$redis->hIncrBy(
'h',
'age', -
2);
$redis->hIncrByFloat(
'h',
'age', -
0.33);
返回操作后的value(小数点保留
15位)
$redis->hMset(
'h',
array(
'score' =>
'80',
'salary' =>
2000));
全选复制放进笔记
$redis->hMGet(
'h',
array(
'score',
'salary'));
转载请注明原文地址: https://ju.6miu.com/read-17928.html