redis常用命令
全局命令:
查看所有键 | keys * |
键总数 |
dbsize |
检查键是否存在 |
exists key |
删除键 | del key [key ...] |
键过期 |
expire key seconds ttl命令会返回键的剩余过期时间,它有3种返回值: 大于等于0的整数:键剩余的过期时间。 -1:键没设置过期时间。 -2:键不存在
ttl命令观察键key的剩余过期时间 |
键对应的数据结构类型 | type key |
五大数据类型:
字符串类型:
字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。
设置值 |
set key value [ex seconds] [px milliseconds] [nx|xx] ex seconds:为键设置秒级过期时间。 px milliseconds:为键设置毫秒级过期时间。 nx:not exisits 键必须不存在,才可以设置成功,用于添加。 xx:与nx相反,键必须存在,才可以设置成功,用于更新。 |
|
获取值 |
get key | |
批量设置值 |
mset key value [key value ...] |
mset a 1 b 2 c 3 d 4 |
批量获取值 |
mget key [key ...] | mget a b c d |
计数 |
incr key 返回结果分为三种情况: 值不是整数,返回错误。 值是整数,返回自增后的结果。 键不存在,按照值为0自增,返回结果为1
decr(自减) incrby(自增指定数字) decrby(自减指定数字) incrbyfloat(自增浮点数) |
|
字符串长度 | strlen key | |
设置并返回原值 |
getset key value getset和set一样会设置值,但是不同的是,它同时会返回键原来的值 |
哈希(hash)类型:
设置值 |
hset key field value |
hset user:1 name tom |
获取值 |
hget key field | hget user:1 name |
删除field | hdel key field [field ...] | hdel user:1 name |
计算field个数 | hlen key |
hset user:1 name tom hset user:1 age 23 hset user:1 city tianjin
hlen user:1 |
批量设置或获取field-value |
hmget key field [field ...] hmset key field value [field value ...] |
hmset user:1 name mike age 12 city tianjin |
判断field是否存在 |
hexists key field | hexists user:1 name |
获取所有field |
hkeys key hkeys命令应该叫hfields更为恰当,它返回指定哈希键所有的field |
hkeys user:1 |
获取所有value | hvals key | hvals user:1 |
获取所有的field-value |
hgetall key 在使用hgetall时,如果哈希元素个数比较多,会存在阻塞Redis的可能。如果开发人员只需要获取部分field,可以使用hmget, |
hgetall user:1 |
hincrby hincrbyfloat | hincrby和hincrbyfloat,就像incrby和incrbyfloat命令一样,但是它们的作用域是filed |
hset user:1 age 25 hkeys user:1 hgetall user:1 hincrby user:1 age 10
|
列表(list)类型
在Redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素(索引从0算起)
常用的命令字段:
集合内操作:
添加元素 | sadd key element [element ...] |
exists myset sadd myset a b c |
删除元素 | srem key element [element ...] |
srem myset a b |
计算元素个数 |
scard key |
scard myset |
判断元素是否在集合中 |
sismember key element |
sismember myset c |
随机从集合返回指定个数元素 |
srandmember key [count] [count]是可选参数,如果不写默认为1 |
srandmember myset 2 |
从集合随机弹出元素 | spop key | spop myset |
获取所有元素 |
smembers key 返回结果是无序的 |
smembers myset |
集合间操作
数据准备: user:1:follow和user:2:follow
sadd user:1:follow it music his sports
sadd user:2:follow it news ent sports
求多个集合的交集 | sinter key [key ...] |
sinter user:1:follow user:2:follow 1) "sports" 2) "it" |
求多个集合的并集 | suinon key [key ...] |
sunion user:1:follow user:2:follow 1) "sports" 2) "it" 3) "his" 4) "news" 5) "music" 6) "ent" |
求多个集合的差集 | sdiff key [key ...] |
sdiff user:1:follow user:2:follow 1) "music" 2) "his" |
将交集、并集、差集的结果保存 |
sinterstore destination key [key ...] suionstore destination key [key ...] sdiffstore destination key [key ...] |
sinterstore user:1_2:inter user:1:follow user:2:follow
|
有序集合:
有序集合提供了获取指定分数和元素范围查询、计算成员排名等功能
注意:有序集合中的元素不能重复,但是score可以重复,就和一个班里的同学学号不能重复,但是考试成绩可以相同。
列表、集合、有序集合三者的异同点:
集合内
添加成员 | zadd key score member [score member ...] |
zadd user:ranking 251 tom zadd user:ranking 1 kris 91 mike 200 frank 220 tim 250 martin |
计算成员个数 |
zcard key |
zcard user:ranking |
计算某个成员的分数 | zscore key member | zscore user:ranking tom |
计算成员的排名 |
zrank key member zrevrank key member zrank是从分数从低到高返回排名,zrevrank反之。 |
zrank user:ranking tom zrevrank user:ranking tom |
删除成员 | zrem key member [member ...] | zrem user:ranking mike |
增加成员的分数 | zincrby key increment member | zincrby user:ranking 9 tom |
返回指定排名范围的成员 |
zrange key start end [withscores] zrevrange key start end [withscores] 注意:start end可以使用0 -1代指全部 有序集合是按照分值排名的,zrange是从低到高返回,zrevrange反之。 如果加上withscores选项,同时会返回成员的分数: |
zrange user:ranking 0 2 withscores |
返回指定分数范围成员个数 | zcount key min max | zcount user:ranking 200 221 |
集合间的操作
交集 |
zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] destination:交集计算结果保存到这个键。 numkeys:需要做交集计算键的个数。 key[key...]:需要做交集计算的键。 weights weight[weight...]:每个键的权重,在做交集计算时,每个键中的每个member会 将自己分数乘以这个权重,每个键的权重默认是1。 aggregate sum|min|max:计算成员交集后,分值可以按照sum(和)、min(最小值) 、max(最大值)做汇总,默认值是sum。 下面操作对user:ranking:1和user:ranking:2做交集,weights和aggregate使用了 默认配置,可以看到目标键user:ranking:1_inter_2对分值做了sum操作: |
zinterstore user:ranking:1_inter_2 2 user:ranking:1 |
有序集合 | zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] | zunionstore user:ranking:1_union_2 2 user:ranking:1 user:ranking:2 |
建管理:
键重命名 |
rename key newkey | |
|
randomkey | |
键过期 |
expire key seconds:键在seconds秒后过期 expireat key timestamp:键在秒级时间戳timestamp后过期 |
|
遍历键 |
全量遍历键 keys pattern
|