phpredis 字符串操作

字符串是 Redis 最基本的数据类型,能够存储任何类型的字符串,下面讲解具体的用法。

set

设置一个key,对应的值为字符串类型,成功返回 TRUE,如果 key 已经存在,覆盖。

1
2
3
4
5
6
7
8
9
10
11
12
13
if ($redis->set('k1', 'v1')) {
echo 'success';
} else {
echo 'error';
}

$redis->set('k2', 'v2', 10); // 设置有过期时间的 key,过期时间单位秒

# 第三个参数也可以是数组
// 如果 key 不存在,设置他,ex 单位为秒
$redis->set('key', 'value', Array('nx', 'ex'=>10));
// 如果 key 存在,设置他,px 单位为毫秒
$redis->set('key', 'value', Array('xx', 'px'=>1000));

get

获取当前 key 的值,如果 key 不存在,返回 FALSE

1
2
3
if ($str = $redis->get('k1')) {
echo $str;
}

setEx, pSetEx

设置 key 具有过期时间,成功返回 TRUE,两个函数的区别是:setEx 参数的单位是秒,pSetEx 参数的单位是毫秒。

1
2
$redis->setEx('k1', 10, 'v1');  // 设置过期时间为 10s
$redis->pSetEx('k1', 1000, 'v1'); // 设置过期时间为 1s

setNx

当数据库中不存在 key 时,设置它,成功 TRUE,失败返回 FALSE

1
2
$redis->setNx('k2', 'v2');  // TRUE
$redis->setNx('k2', 'v3'); // FALSE

incr, incrBy

让一个存储数字的 key 增长,返回新的值。
incr 值增长 1,
‘incrBy’ 可以设置增长值。

1
2
3
4
5
$redis->set('n1', 1);
$redis->incr('n1');
echo $redis->get('n1'); // 2
$redis->incrBy('n1', 10);
echo $redis->get('n1'); // 12

incrByFloat

给一个存储数字的 key 已浮点数增长。

1
2
3
$redis->set('n1', 1);
$redis->incrByFloat('n1', 1.5);
echo $redis->get('n1'); // 2.5

decr, decrBy

incrincrBy 相反。

1
2
3
4
5
$redis->set('n1', 10);
$redis->decr('n1');
echo $redis->get('n1'); // 9
$redis->decrBy('n1', 10);
echo $redis->get('n1'); // -1

mGet

获取多个 key 的值,返回一个数组。

1
2
3
4
5
$arr = $redis->mGet([
'k1',
'k2'
]);
print_r($arr);

mSet

设置多个 key 的值,成功返回 TRUE,失败返回 FALSE

1
2
3
4
5
6
7
8
9
$res = $redis->mSet([
'k1' => 'v1',
'k2' => 'v2',
'k3' => 'v3'
]);
var_dump($res);
echo $redis->get('k1');
echo $redis->get('k2');
echo $redis->get('k3');

getSet

返回旧值,设置新值,如果 key 不存在的话,直接设置,返回值为 FALSE

1
2
3
4
5
6
7
8
9
10
$redis->set('a', 1);
echo $redis->get('a'); // 1
$old = $redis->getSet('a', 'str');
echo $old; // 1
echo $redis->get('a'); // str

// 假设 b 没有设置
$b = $redis->getSet('b', 100);
var_dump($b); // false
echo $redis->get('b'); // 100

append

追加一个字符串到一个存储字符串的 key 后面,如果是数值的话,会隐式转换为字符串操作。

1
2
3
$redis->set('append', 'value##');
$redis->append('append', 'append');
echo $redis->get('append');

getRange & setRange

getRange 获取存储字符串中的某一段。
setRange 设置存储字符串中的某一段。

1
2
3
4
$redis->set('range', 'hello world');
echo $redis->getRange('range', 0, 6);
$redis->setRange('range', 5, 'a');
echo $redis->get('range');

strLen

获取 key 中存储字符串的长度。

1
2
$redis->set('len', 'this is test');
echo $redis->strLen('len'); // 12

getBit

获取一个值的二进制位。

1
2
3
$redis->set('key', "\x7f"); // 0111 1111
$redis->getBit('key', 0); // 0
$redis->getBit('key', 1); // 1

setBit

改变一个值的二进制位。

1
2
3
$redis->set('n', 1); // 0000 0001
$redis->setBit('n', 6, 1); // 0000 0011
echo $redis->get('n');

©版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 & 作者信息

End

坚持原创技术分享,您的支持将鼓励我继续创作!
Flyertutor WeChat Pay

WeChat Pay

Flyertutor Alipay

Alipay