Redis 的数据类型
redis-cli 命令
命令 | 说明 | cli 命令示例 |
---|
del | 删除 key | del key_name |
exists | 检查给定 key 是否存在 | exists key_name |
keys | 查找所有符合给定模式 pattern 的 key | keys pattern |
type | 返回 key 所存储的值的类型 | type key_name |
expire | 设置 key 的过期时间 | expire key_name time_in_seconds |
ttl | 返回 key 的剩余过期时间 | ttl key_name |
save | RDB 持久化 | save |
info | Redis 服务器的各种信息和统计数值 | inro [section] |
shutdown | 保存并停止所有客户端 | shutdown [nosave] [save] |
flushall | 清空整个 redis 服务器的数据 | flushall |
flushdb | 清空当前库中所有的 key | flushdb |
select | 切换到指定的数据库 | select db_number |
Redis 字段类型
- 字符串 String
- 散列/哈希 Hash
- 列表 List
- 无序集合 Set
- 可排序集合 Zset
字符串 String
最大容量为 512M
命令 | 说明 | Cli 命令示例 | PHP 写法 |
---|
set | 赋值 | set key value | $redis->set(‘key’, ‘value’); |
setex | 赋值并添加过期时间 | setex key expire value | $redis->setex(‘key’, ‘expire’, ‘value’); |
get | 取值 | get key | $redis->get(‘key’); |
incr | 递增数字 | incr key | $redis->incr(‘int_key’); |
incrby | 增加指定的数字 | incrby key increment | $redis->incrBy(‘int_key’, number); |
decr | 递减数字 | decr key | $redis->decr(‘key1’); |
decrby | 减少指定的数字 | decrby key decrement | $redis->decrBy(‘key1’, number); |
incrbyfloat | 增加指定浮点数 | incrbyfloat key increment | $redis->incrByFloat(‘key1’, 1.5); |
append | 向尾部追加值 | append key value | $redis->append(‘key’, ‘value2’); |
strlen | 获取字符串长度 | strlen key | $redis->strlen(‘key’); |
mset | 同时设置多个 key 的值 | mset key1 value1 [key2 value2 …] | $redis->mSet(array(‘key0’ => ‘value0’, ‘key1’ => ‘value1’)); |
mget | 同时获取多个 key 的值 | mget key1 [key2 …] | $redis->mGet(array(‘key1’, ‘key2’, ‘key3’)); |
散列/哈希 Hash
1、与 php 的 array 相似;2、可以保存多个 key-value 对,每个 k-v 都是字符串类型;3、最多 2^32-1 个字段。
命令 | 说明 | Cli 命令示例 | PHP 写法 |
---|
hset | 赋值 | hset key field value | $redis->hSet(key, field, value); |
hmset | 赋值多个字段 | hmset key field1 value1 [field2 values] | $redis->hMset(key, array(‘field1’ => ‘value1’, ‘field2’ => ‘value2’)); |
hget | 取值 | hset key field | $redis->hGet(key, field); |
hmget | 取多个字段的值 | hmset key field1 [field2] | $redis->hmGet(key, array(‘field1’, ‘field2’)); |
hgetall | 取所有字段的值 | hgetall key | $redis->hGetAll(key); |
hlen | 获取字段的数量 | hlen key | $redis->hLen(key); |
hexists | 判断字段是否存在 | hexists key field | $redis->hExists(key, field); |
hsetnx | 当字段不存在时赋值 | hsetnx key field value | $redis->hSetNx(key, field, value); |
hincrby | 增加数字 | hincrby key field increment | $redis->hIncrBy(key, field, num); |
hdel | 删除字段 | hdel key field | $redis->hDel(key, field); |
hkeys | 获取所有字段名 | hkeys key | $redis->hKeys(key); |
hvals | 获取所有字段值 | hvals key | $redis->hVals(key); |
列表 List
1、实现方式为双向链表;2、用于存储一个有序的字符串列表;3、从队列两端添加和弹出元素;4、特别适合于做消息队列。
命令 | 说明 | Cli 命令示例 | PHP 写法 |
---|
lpush | 向列表左端添加元素 | lpush key value | $redis->lPush(key, value); |
rpush | 向列表右端添加元素 | rpush key value | $redis->rPush(key, value); |
lpop | 从列表左端弹出元素 | lpop key | $redis->lPop(key); |
rpop | 从列表右端弹出元素 | rpop key | $redis->rPop(key); |
llen | 获取列表中元素个数 | llen key | $redis->lSize(key); |
lrange | 获取列表中某一片段的元素 | lrange key start stop | $redis->lRange(key, start, end); |
lrem | 删除列表中指定的值 | lrem key count value | $redis->lRem(key, value, count); |
lindex | 获取指定索引的元素值 | lindex key index | $redis->lGet(key, index); |
lset | 设置指定索引的元素值 | lset key index value | $redis->lSet(key, index, value); |
ltrim | 值保留列表指定片段 | ltrim key start stop | $redis->lTrim(key, start, end); |
linsert | 向列表中插入元素 | linsert key before/after existing_value value | $redis->lInsert(key, Redis::BEFORE, existing_value, value); |
无序集合 Set
1、集合中每个元素都是不同的;2、元素最多为 2^32-1;3、元素没有顺序
命令 | 说明 | Cli 命令示例 | PHP 写法 |
---|
sadd | 添加元素 | sadd key value1 [value2 value3 …] | $redis->sAdd(‘key1’, ‘set1’); |
srem | 删除元素 | srem key value2 [value2 value3 …] | $redis->sRem(‘key’, ‘set2’); |
smembers | 获得集合中所有元素 | smembers key | $redis->sMembers(‘key’); |
sismember | 判断元素是否在集合中 | sismember key value | $redis->slsMember(key, value); |
sdiff | 对集合做差集运算 | sdiff key1 key2 [key3 …] | $redis->sDiff(key1, key2, key3); |
sinter | 对集合做交集运算 | sinter key1 key2 [key3 …] | $redis->sInter(‘key1’, ‘key2’, ‘key3’); |
sunion | 对集合做并集运算 | sunion key1 key2 [key3 …] | $redis->sUnion(‘key1’, ‘key2’, ‘key3’); |
scard | 获得集合中元素的个数 | scard key | $redis->sCard(‘key1’); |
sdiffstore | 对集合做差集运算并将结果存储 | sdiffstore destination key1 key2 [key3 …] | $redis->sDiffStore(‘output’, key1, key2, key3); |
sinterstore | 对集合做交集运算并将结果存储 | sinterstore destination key1 key2 [key3 …] | $redis->sInterStore(‘output’, ‘key1’, ‘key2’, ‘key3’); |
sunionstore | 对集合做并集运算并将结果存储 | sunionstore destination key1 key2 [key3 …] | $redis->sUnionStore(‘output’, ‘key1’, ‘key2’, ‘key3’); |
srandmember | 随机获取集合中的元素 | srandmember key [count] | $redis->sRandMember(‘key1’, 2); |
spop | 随机弹出一个元素 | spop key | $redis->sPop(‘key1’); |
可排序集合 Zset
1、集合是有序的;2、支持插入,删除,判断元素是否存在;3、可以获取分数最高/最低的前 N 个元素。
命令 | 说明 | Cli 命令示例 | PHP 写法 |
---|
zadd | 添加元素 | zadd key score1 value1 [score2 value2 score3 value3 …] | $redis->zAdd(‘key’, 1, ‘val1’); |
zscore | 获取元素的分数 | zscore key value | $redis->zScore(key, val2); |
zrange | 获取正序排名在某索引区间范围的元素 | zrange key start stop [withscore] | $redis->zRange(‘key1’, 0, -1); |
zrevrange | 获取倒序排名在某索引区间范围的元素 | zrevrange key start stop [withscore] | $redis->zRevRange(‘key1’, 0, -1); |
zrangebyscore | 获取指定分数范围内的元素 | zrangebyscore key min max | $redis->zRangeByScore(key, start, end, array(withscores, limit)); |
zincrby | 增加某个元素的分数 | zcard key | $redis->zSize(‘key’); |
zcount | 获取指定分数范围内的元素个数 | zcount key min max | $redis->zCount(key, start, end); |
zrem | 删除一个或多个元素 | zrem key value1 [value2 …] | $redis->zDelete(‘key’, ‘val2’); |
zremrangebyrank | 按照排名索引区间范围删除元素 | zremrangebyrank key start stop | $redis->zRemRangeByRank(‘key’, 0, 1); |
zremrangebyscore | 按照分数范围删除元素 | zremrangebyscore key min max | $redis->zRemRangeByScore(‘key’, 0, 3); |
zrank | 获取正序排序的元素的排名 | zrank key value | $redis->zRank(key, value); |
zrevrank | 获取逆序排序的元素的排名 | zrevrank key value | $redis->zRevRank(key, value); |