redis常用命令

全局命令:

查看所有键 keys *

键总数

dbsize

检查键是否存在

exists key
删除键 del key [key ...]
键过期

expire key seconds

ttl命令会返回键的剩余过期时间,它有3种返回值:

大于等于0的整数:键剩余的过期时间。

-1:键没设置过期时间。

-2:键不存在

 

ttl命令观察键key的剩余过期时间

键对应的数据结构类型  type key

 五大数据类型:

字符串类型:

字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。

redis常用命令

 

设置值

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)类型:

redis常用命令

设置值

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算起)

redis常用命令

常用的命令字段:

redis常用命令

 

集合内操作:

添加元素 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

 

有序集合:

有序集合提供了获取指定分数和元素范围查询、计算成员排名等功能

redis常用命令

注意:有序集合中的元素不能重复,但是score可以重复,就和一个班里的同学学号不能重复,但是考试成绩可以相同。

列表、集合、有序集合三者的异同点:

redis常用命令

 集合内

添加成员 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  
  1. 随机返回一个键
randomkey  

键过期

 expire key seconds:键在seconds秒后过期

expireat key timestamp:键在秒级时间戳timestamp后过期

 
遍历键

全量遍历键  keys pattern