字符串
Redis 字符串数据类型
- set 字符串
/*** 设置字符串*/
$t = $redis->set('o1','o1');
//返回true or false
var_dump($t);
- get字符串
/*** 获取字符串*/
$t = $redis->get('o1');
//返回true or false
var_dump($t);
结果:
string(2) “o1”
- 返回 key 中字符串值的子字符 getrange
/*** 已存字符串:abcdefghijklmo* 获取string getRange 获取存储在指定 key 中字符串的子字符串*/
$geRange = $redis->getRange('k1',0,-1);
var_dump($geRange);
结果:
string(14) “abcdefghijklmo”
- getSet 将给定 key 的值设为 value ,并返回 key 的旧值(old value)
$getSet = $redis->getSet('k1','AAABBBCCCDDD');
var_dump($getSet);
结果:
string(14) “abcdefghijklmo”
- mget 命令返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil
/*** 批量获取 a100 不存在,所以未false*/
$mget = $redis->mget(['a1','a2','a100']);
结果:
array(3) { [0]=> string(3) “v11” [1]=> string(3) “v22” [2]=> bool(false) }
- 批量设置string
/*** 批量设置*/
$arr = [];
$arr['a1'] = 'v11';
$arr['a2'] = 'v22';
$arr['a3'] = 'v33';
$arr['a4'] = 'v44';
$res = $redis->mset($arr);
var_dump($res);
结果
bool(true)
- Setex 命令为指定的 key 设置值及其过期时间
/**
- Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值,如果不存在,则添加
*/
$res = r e d i s − > s e t e x ( ′ a 1 ′ , 30 , ′ a a a a ′ ) ; v a r d u m p ( redis->setex('a1',30,'aaaa'); var_dump( redis−>setex(′a1′,30,′aaaa′);vardump(res);
结果:
bool(true)
- Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。
/**
- Setnx 命令
*/
$res = r e d i s − > s e t n x ( ′ s e t n x ′ , ′ 你 好 ′ ) ; v a r d u m p ( redis->setnx('setnx','你好'); var_dump( redis−>setnx(′setnx′,′你好′);vardump(res);
在这里插入代码片
如果key setnx 不存在则设置成功,返回true
如果如果key setnx 存在,则返回false
结果:
bool(true)
可设置过期的NX
$res = $redis->set('setnx1','setnx1',['NX','EX'=>60]);
var_dump($res);
- strlen 返回 key 所储存的字符串值的长度
/*** strlen 返回 key 所储存的字符串值的长度。*/$strlen = $redis->strlen('setnx');
var_dump($strlen);
结果:
int(6)
- incr命令
Redis Incr 命令将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内
/*** Incr 命令将 key 中储存的数字值增一*/
$res = $redis->incr("incr_name");
var_dump($res);
结果:
int(1)
11. Incrby 命令和incr一样,只是需要自定义步长
* Incrby 命令和incr一样,只是需要自定义步长*/
$res = $redis->incrBy("incrby_name",2);
var_dump($res);
/**
- Incrbyfloat 命令
/*** Incrby 命令和incr一样,只是需要自定义步长*/
$res = $redis->incrByFloat("Incrbyfloat_name1",2.55);
var_dump($res);
结果:
float(2.55)
- Decr 命令
Redis Decr 命令将 key 中储存的数字值减一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
/*** Incrby 命令和incr一样,只是需要自定义步长*/
$res = $redis->decr("incr_name");
var_dump($res);
结果:
一直减一会出现负数
int(1)
int(-10)
- Decrby 命令
/*** decrBy 命令和incr一样,只是需要自定义步长*/
$res = $redis->decrBy("incr_name",2);
var_dump($res);
- Append 命令
Redis Append 命令用于为指定的 key 追加值。
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样
$v = "wo shi shui";
$temp = $redis->append('k1',$v); //返回该字符串的长度
$tmp = $redis->get('k1');
var_dump($temp);
var_dump($tmp);
int(34)
string(34) “AAABBBCCCDDDwo shi shuiwo shi shui”
Hash
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
- hset 命令
Redis Hset 命令用于为哈希表中的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,旧值将被覆盖。
/*** hash hset*/
$res = $redis->hSet('hset_key','user_1','1');
var_dump($res);
返回值:
如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
2. hmset() 批量插入
$arr['user_id'] = 1;
$arr['user_name'] = '李冰';
$arr['user_age'] = 100;
$arr['user_address'] = '西安市未央区吕小寨';
$res = $redis->hMSet('hset_key',$arr);
var_dump($res);
返回值:
true
- hget 命令用于返回哈希表中指定字段的值。
$hget = $redis->hGet('hset_key','user_name');
var_dump($hget);
返回值:
string(6) “李冰”
$res = $redis->hMGet('hset_key',['user_name','user_age1']);
var_dump($res);
array(2) { [“user_name”]=> string(6) “李冰” [“user_age”]=> string(3) “100” }
- HGETALL 获取在哈希表中指定 key 的所有字段和值
$res = $redis->hGetAll('hset_key');
var_dump($res);
返回值:
array(4) {["user_id"]=>string(1) "1"["user_name"]=>string(6) "李冰"["user_age"]=>string(3) "100"["user_address"]=>string(27) "西安市未央区吕小寨"
}
- hdel 命令
/*** Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。*/$res = $redis->hDel('hset_key4','user_id');
var_dump($res);
返回值:
int(1)
删除user_id
前
删除user_id
后
删除多个hash_key
$res = $redis->hDel('hset_key3','user_id','user_name','user_address');
var_dump($res);
- Hexists 命令用于查看哈希表的指定字段是否存在。
$res = $redis->hExists('hset_key3','user_id');
var_dump($res);
如果没有hash_key ,则返回false,
如果有hash_key ,则返回true,
- Hincrby 命令 用于为哈希表中的字段值加上指定增量值。
Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。
增量也可以为负数,相当于对指定字段进行减法操作。
如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。
本操作的值被限制在 64 位(bit)有符号数字表示之内。
在这里插入代码片
增加前user_age
增加后user_age
- Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
$res = $redis->hIncrByFloat('hset_key_float','age',10.01);
var_dump($res);
返回值:
float(10.01)