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; 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 = “tai
jpp”(存在不可见字符,其长度是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()函数:暂不介绍