redis的数据类型String,其原生命令和php操作Redis String函数介绍

String类型简介

String类型存储的值类型包括:字符串,整数类型,浮点数类型,String类型的相关命令可以对字符串和整数型元素进行一定的处理。

原生命令介绍

命令 命令描述 实例
SET key value 设置key的值为value SET string1 ‘testyyy’
GET key 获取指定key的value值 GET string1,返回testyyy
GETRANGE key start end 返回指定key的value值的子串 GETRANGE string1 0 1 ,返回值:te,GETRANGE string1 0 -1 ,返回值:testyyy,GETRANGE string1 -3 -1 ,返回值:yyy
GETSET key value 将指定的key的值设为value,并返回key的旧值(old value) GETSET string1 youshuo,返回值:testyyy,再次执行GET string1,返回:youshuo
GETBIT key offset 对key所存储的字符串值,获取指定偏移量上的位(bit) GETBIT string1 1,返回值:1
MGET key1,key2 获取一个或者多个给定key的value值 MGET string1 string2,返回值:“youshuo”,“tettou”
MSET key value [key value] 同时设置一个或者多个key-value对当且仅当所有给定的key都不存在 MSET k1 ‘k111’ k2 ‘k222’,MGET k1 k2,输出"k111",“k222”
MSETNX key value [key value] 同时设置一个或多个key-value对,当且仅当所有key都不存在 MSETNX k3 ‘k3333’ k4 ‘k4444’,执行MGET k3 k4,返回值:k333,k444
SETBIT key offset value 对key所存储的字符串值,设置或清除指定偏移量上的位(bit) SETBIT string1 15 0,执行get string1后返回:Ynushuo,(每个字符都是有8位二进制编码组成的,修改其中的一位,就会改变这个值),offset指的是哪个位置的数据偏移,value则是指偏移量:0或1
SETEX key seconds value 将值value关联到key,并将key的过期时间设置为seconds(以秒为单位) SETEX string1 12 pppp,立即执行get string1,返回值:pppp,12秒后执行get string1,返回值为空nil
SETNX key value 只有在key不存在时设置key的值 SETNX nokey ‘llll’,执行get nokey,返回值:‘llll’,再次执行SETNX nokey ‘kkkk’,返回值:‘llll’,nokey的值不变
SETRANGE key offset value 用value参数覆写给定key所存储的字符串值,从偏移量offset开始 string1的值为youshuo,执行SETRANGE string1 3 ‘test’,string1的值为youtest
STRLEN key 返回key所存储的字符串值得长度 STRLEN string1,返回值:7
PSETEX key milliseconds value 类似SETEX,但是以毫秒为单位设置key的生存时间 PSETEX pkey 4000 ‘ppp’,
INCR key 将key中存储的数字值增一 SET num 1,INCR num,GET num输出num值:2
INCRBY key increment 将key所存储的值加上给定的增量值 INCRBY num 3,GET num输出num值:5
INCRBYFLOAT key increment 将key所存储的值加上给定的浮点增量值 INCRBYFLOAT num 1.2,执行该命令直接返回num的值:6.2
DECR key 将key中存储的数字值减一 set num 6,DECR num 直接输出num值为:5
DECRBY key decrement key所存储的值减去给定的减量值 DECRBY num 6,直接输出num值为:-1
APPEND key value 如果key已经存在且是一个字符串,APPEND命令将指定的value追加到该key原来值得末尾 APPEND string1 ‘pop’,GET string1输出:youtestpop

PHP操作redis string的函数

  • set(key,value,Timeout or options Array)函数
    * 说明:为string类型的key赋值value;如果第三个参数为Timeout(整数),则相当于运行SETEX命令(单位为:s),如果第三个参数为Array,则使用redis的扩展选项(看实例)
    * 参数:key,value,Timeout or options Array
    * 返回值:命令执行成功返回true
    * php $ret = $redis->set('key', 'value', Array('nx', 'ex'=>100)); //为key设置生存时间:100s; $res = $redis->ttl('key'); var_dump($res); // 返回:key剩余的时间(单位:s)
    * php $ret = $redis->set('string1', 'value', Array('xx', 'px'=>100000));//为已存在的key赋值并设置生存时间 $res = $redis->pttl('string1'); var_dump($res); //返回:string1剩余的时间(单位:ms)
  • get(key)函数
    * 说明:获取key的value值
    * 参数: key
    * 返回值:如果key存在,则返回key的value;若key不存在,则返回false;
    * php $ret = $redis->get('string1'); //返回值:value
  • setEx(key,ttl,value)函数
    * 说明:为key赋值value,并设置生存时间为ttl(s)
    * 参数:key,ttl(生存时间),value(key值)
    * 返回值:命令执行成功则返回true
    * php $ret = $redis->setEx('key', 3600, 'value'); var_dump($ret); // true
  • pSetEx(key,pttl,value)函数
    * 说明:为key赋值value,并设置生存时间为ttl(ms)
    * 参数:key,ttl(生存时间),value(key值)
    * 返回值:命令执行成功则返回true
    * php $ret = $redis->pSetEx('key', 3600, 'value'); var_dump($ret); // true
  • setNx(key,value)函数
    * 说明:如果key在数据库中不存在,则为key赋值value,
    * 参数:key,value(key值)
    * 返回值:命令执行成功则返回true,否则返回false;
    * php $ret = $redis->setNx('key', 'value'); var_dump($ret); // true $res = $redis->setNx('key', 'value2'); var_dump($res); // false
  • del(para), delete(para), unlink(para)
    * 说明:删除给定的key;redis-server >= 4.0.0可以使用unlink()删除给定的key,unlink方法是非阻塞的,会异步执行删除操作;
    * 参数:para可以是多个key(类似:del(key1 key2 …)),也可以是多个key组成的数组(array(key1,key2,key3,…))
    * 返回值:返回被删除key的个数
    * php $redis->set('key1', 'val1'); $redis->set('key2', 'val2'); $redis->set('key3', 'val3'); $redis->set('key4', 'val4'); $redis->delete('key1', 'key2'); /* return 2 */ $redis->delete(array('key3', 'key4')); /* return 2 */
    * php /* If using Redis >= 4.0.0 you can call unlink */ $redis->unlink('key1', 'key2'); $redis->unlink(Array('key1', 'key2'));
  • exists(key)函数
    * 说明: 验证key是否存在于数据库
    * 参数: key:可以是单个的key,也可以是多个key组成的数组
    * 返回值:返回要验证的key中实际存在的key的个数
    * 注意:redis-server < 4.0.0 key只能是单个,且返回true或false;
    * php $redis->set('key1', 'val1'); $redis->set('key2', 'val2'); $redis->set('key3', 'val3'); $redis->set('key4', 'val4'); $ret = $redis->exists('key5'); var_dump($ret); /*key5不存在返回: false */
  • incr(key,[increment]), incrBy(key,increment)函数
    * 说明:为key的value时整数的值加上1或者increment;对incr来说,increment为非必须选项;对incrBy而言,increment为必选项;
    * 参数:key,increment(增量)
    * 返回值:返回key的新值(加上增量之后的值)
    * 注意: 如果key不存在,则key的默认值为:0;
    * php $redis->incr('key1');/* 1 */ $redis->incr('key1',9); /* 10 */ $redis->incrBy('key1',10); /* 20 */ $ret = $redis->get('key1'); var_dump($ret); /* 20 */
  • incrByFloat(key,float_increment)函数
    * 说明:为key的value值增加float_increment
    * 参数:key,float_increment(浮点数)
    * 返回值:key的新value(浮点型数据)
    * php $redis->set('float1',2.4); $ret = $redis->incrByFloat('float1',4.3); // 输出$ret=6.7
  • decr(key,[increment]), decrBy(key,increment)
    * 说明:为key的value值减去1或者increment
    * 参数:key,increment(对于decr来说非必须选项,对decrBy来说是必选项)
    * 返回值:key的新值
    * 注意:key的值必须是整型数据
    * php $redis->set('key',13); $res = $redis->decr('key'); /* 12 */ $ret = $redis->decr('key',3); /* 9 */ $ret1 = $redis->decrBy('key',2); /* 7 */
  • mGet(para), getMultiple(para)函数
    * 说明:返回数组中所有key的value值,如果key不存在,则返回false;两个函数的作用是一样的
    * 参数: 由key组成的数组
    * 返回值:获取所有key返回的值组成的数组(索引数组)
    * php $ret = $redis->mget(array('string','string1','string2')); /* array(3) { [0]=> string(7) "string3" [1]=> string(5) "value" [2]=> string(8) "validjty" } */ $res = $redis->mget(array('string7','string3','string8')); /* array(3) { [0]=> bool(false) [1]=> string(6) "value3" [2]=> bool(false) } */
  • getSet(key,value)函数
    * 说明:为key赋予新值value,并返回key的旧值
    * 参数: key,value(key的新值)
    * 返回值:返回key的旧值
    * php $redis->set('string',199); $ret = $redis->getSet('string','oldString'); // 199 $res = $redis->getSet('string','string3'); // oldString
  • randomKey()函数
    * 说明:随机返回一个key
    * 参数: 无
    * 返回值: 从数据库中随机取出一个key并返回
    * php $key = $redis->randomKey(); /* key : string */ $ret = $redis->get($key); /* string的值为: string3 */
  • move(key,dbIndex)函数
    * 说明:将key及其值移动到数据库dbIndex中
    * 参数:key(要移动的key),dbIndex(目标数据库的索引值)
    * 返回值:如果移动成功则返回true,失败返回false
    * 注意:移动之后原数据库中该key就会消失
    * php $ret = $redis->move('string',1); /* true */ $r2 = $redis->select(1); /* true */ $res = $redis->get('string'); /* string的值:select1 */
  • rename(srcKey,dstKey), renameKey(srcKey,dstKey)函数
    * 说明:将key:srcKey重命名为dstKey;两个函数作用及参数都是相同的
    * 参数: srcKey(原键名),dstKey(目标键名)
    * 返回值:重命名成功则返回true,失败返回false
    * php $ret = $redis->rename('string','dstString'); /* true */ $res = $redis->get('dstString'); /* select1 */ $res1 = $redis->get('string'); /* false */
  • renameNx(srcKey,dstKey)函数
    * 说明:和rename(),renameKey()函数是一样的,区别在于:如果dstKey存在,则不会用dstKey代替srcKey
  • expire(key,ttl), setTimeout(key,ttl), pexpire(key,pttl)
    * 说明:为key的值设置生存时间,expire和setTimeout以s为单位,pexpire以ms为单位
    * 参数:key,ttl(生存时间s),pttl(生存时间ms) 整型数据
    * 返回值:设置成功返回true,失败返回false
    * php $redis->set('string','expire'); $redis->expire('string',10); var_dump($redis->get('string')); /* expire */ sleep(12); var_dump($redis->get('string')); /* false */
  • expireAt(key,timestamp), pexpireAt(key,timestamp)函数
    * 说明:为key的值设置生存时间,该生存时间是个时间戳
    * 参数:key,timestamp(时间戳形式的生存时间),pexpireAt需要的是毫秒数
    * 返回值:设置成功返回true,失败则返回false
    * php $redis->set('string','expire'); $time = time(); $redis->expireAt('string',10+$time); var_dump($redis->get('string')); /* expire */ sleep(12); var_dump($redis->get('string')); /* false */
  • keys(string), getKeys(string)函数
    * 说明:返回满足string条件的key,两者的作用是一样的
    * 参数:string(正则表达式写成的匹配条件)
    * 返回值:有获取到满足匹配条件的key组成的数组(索引数组)
    * php $keyArr = $redis->keys('string*'); var_dump($keyArr); /* array(4) { [0]=> string(7) "string1" [1]=> string(7) "string2" [2]=> string(7) "string3" [3]=> string(7) "string4" } */
  • scan()函数
    * 说明:暂不做解释
  • object(retrieve,key)函数
    * 说明:获取一个key的各个方面的信息
    * 参数: retrieve(encoding:编码方式;refcount:有多少个key的值域此key的值相同;idletime:剩余生存时间)
    * 返回值:如果key不存在则返回false,其他的根据参数的类型返回相应的值
  • type(key)函数
    * 说明:返回key的值得数据类型
    * 参数: key
    * 返回值:返回key值得类型,包括string,set,list,zset,hash,other
    * php $redis->set('string','encoding'); $ret1 = $redis->type('string'); var_dump($ret1); // string
  • append(key,value1)函数
    * 说明: 将字符串value1追加到key的value值后面
    * 参数:key(键),value1(要追加的字符串)
    * 返回值:返回的是追加之后字符串的长度
    * PHP $key = 'string1'; $redis->set($key,'testyyy'); $ret = $redis->append($key,'value1'); echo $ret;
    * 输出$ret:13
  • getRange(key,start,end)函数
    * 说明:返回字符串key的值中从start开始,end结束的一段子串
    * 参数:key(键),start(开始位置),end(结束位置)
    * 注意:start是从0开始的
    * 返回值:返回截取的子串
    * php $ret = $redis->getRange($key,0,3); echo $ret;
    * 输出$ret: test
  • setRange(key,offset,value)函数
    * 说明:替换字符串的一部分
    * 参数:key(键),offset(偏移量),value(用来替换的值)
    * 注意:offset是从0开始的
    * 返回值:返回替换后的key的value值长度
    * php $ret = $redis->setRange($key,3,'kkk'); $str = $redis->get($key); echo $str; echo $ret;
    * 输出$str = ‘teskkkyvalue’ ; $ret = 13;
  • strLen(key)函数
    * 说明: 返回key的值的长度
    * 参数:key(键)
    * 返回值:key的value值长度
    * php $ret = $redis->strlen($key); echo $ret;
    * 输出$ret = 13;
  • getBit(key,offset)函数
    * 说明:对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
    * 参数:key(键),offset(偏移量)
    * 注意:offset是从0开始的
    * 返回值:位值(0/1)
    * php $ret = $redis->getBit($key,6); echo $ret;
    * 输出值$ret = 0;
  • setBit(key,offset,value)函数
    * 说明:对key所存储的字符串值的指定offset位置设置位值(bit)
    * 参数:key,offset(偏移量),value(位值0/1)
    * 注意:offset是从0开始的
    * 返回值:设置前的位值(0/1)
    * php $ret = $redis->setBit($key,8,1); $res = $redis->getBit($key,8); echo $ret.'<br/>'; echo $res;
    * 输出 r e t = 0 ret=0; res = 1;
  • bitOp(operation,ret_key,key1,key2)函数
    * 说明:对多个key进行位运算
    * 参数:operation(位操作:“AND”, “OR”, “NOT”, “XOR”),ret_key(位操作后返回的key),key1,key2(参与位运算的key)
    * 返回值:返回位运算之后的ret_key的value的长度
    * php $key = 'string1'; $key1 = 'string2'; $ret = $redis->bitOp('AND','ret_key',$key,$key1); $res = $redis->get('ret_key'); echo $ret.'<br/>'; echo $res;
    * 输出$ret = 13; $res = “taijpp”(存在不可见字符,其长度是13)
  • bitCount(key)函数
    * 说明:获取key的value值中bit为1的个数
    * 参数:key
    * 返回值:key的value值中bit为1的数量
    * php $key = 'string1'; $ret = $redis->bitCount($key); echo $ret.'<br/>';
    * 输出 $ret=57;
  • sort(key options:array(key=>value,…))函数
    * 说明:对列表中的元素进行排序,设置等
    * 参数:key;options:array(key=>value,…),key,value的值包括以下几项:‘by’ => ‘some_pattern_’,‘limit’ => array(0, 1),‘get’ => 'some_other_pattern_’ or an array of patterns,‘sort’ => ‘asc’ or ‘desc’,‘alpha’ => TRUE,‘store’ => ‘external-key’
    * 返回值:一个数组;或者被options的条件使用过的元素的个数
    * php $redis->delete('s'); $redis->sAdd('s', 5); $redis->sAdd('s', 4); $redis->sAdd('s', 2); $redis->sAdd('s', 1); $redis->sAdd('s', 3);
    php var_dump($redis->sort('s')); // 1,2,3,4,5
    php var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    php var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
  • ttl(key),pttl(key)函数
    * 返回给定key的value的生存时间;ttl()以秒为单位,pttl()以毫秒为单位
    * 参数:key
    * 返回值:如果ttl存在,则返回ttl剩余的时间。如果不存在ttl,则返回“-1”;如果key不存在,则返回“-2”;
    * php $redis->setex($key,'60','ttlTest'); $ret = $redis->ttl($key); echo $ret.'<br/>'; // 输出:45,60秒之后返回“-2”
    * php $key = 'string2'; $redis->set($key,'string2'); $ret = $redis->ttl($key); echo $ret.'<br/>'; // 如果不设置过期时间,则返回“-1”
  • persist(key)函数
    * 说明:将key上面的过期时间去掉
    * 参数:key
    * 返回值:如果过期时间被移除,则返回true;key不存在或者不存在过期时间返回false;
    * php $key = 'string1'; $redis->setex($key,'60','ttlTest'); $ret = $redis->persist($key); var_dump($ret); // 返回 bool(true)
    * php $key = 'string1'; $ret = $redis->persist($key); var_dump($ret); // 60s过后,返回 bool(false)
  • mSet(array()),mSetNx(array())函数
    * 说明:一次性为多个key赋值
    * 参数:array(key1=>value1,key2=>value2,…)
    * 返回值:mSetNx当为所有key赋值成功,所有key在原来的数据表中都不存在,则返回true;
    * php $key = 'string1'; $ret=$redis->msetnx(array($key=>'value','string3'=>'value3')) var_dump($ret); //由于string1已经存在,则$ret = false;
    * php $key = 'string1'; $res = $redis->msetnx(array('string4'=>'value4','string3'=>'value3')); var_dump($res); //由于string3,string4都不存在,则$res = true;
    * php $key = 'string1'; $ret = $redis->mset(array($key=>'value','string3'=>'value3')); var_dump($ret); //所有键如果已经存在值,则会重新赋值,赋值成功则返回:true
  • dump(key)函数
    * 说明:将key的值从redis数据库中取出,而后通过restore命令写入到redis数据库中,这些数据以二进制的方式存储在redis数据库中
    * 参数: key
    * 返回值:编码之后的key的value值;如果key不存在则返回false;
    * php $key = 'string1'; $redis->set($key,'testoop'); $ret = $redis->dump($key); var_dump($ret); // 返回:"testoop�2l��T/l";
  • restore(key,ttl,value)函数
    * 说明:将dump()获取的数据转储到key中
    * 参数:key,ttl(key的生存时间),value(为key赋值value)
    * 返回值:如果转储成功则返回true,失败返回false;
    * 注意:在restore()函数中的key是value值,value为dump()取出的值,二者相同则为true,如下面的实例:
    * php $key = 'string1'; $redis->set($key,'testoop1'); $value = $redis->dump($key); $ret = $redis->restore('testoop1',600,$value); var_dump($ret); //注意restore()中的key,如果成功为true,失败为false;
  • migrate()函数:暂不介绍

猜你喜欢

转载自blog.csdn.net/StimmerLove/article/details/83506028
今日推荐