redis 常用命令

redis数据类型:string–字符串类型、hash–散列类型、list–列表类型、set–集合类型、zset–有序集合类型

通用命令

  • keys pattern(通配符) 查看key
符号 含义
? 匹配一个字符
* 匹配任意个字符(包括0)
[] 匹配括号区间中的任一字符,可以使用"-"符合表示一个范围,如a[b-d]代表ab、ac、ad
\x 匹配x,用于转义字符
  • exists key 判断key是否存在
  • del key 删除key
  • del key1 key2 key3 删除多个key
  • type key 获取的key的value的数据类型

1、字符串类型(sttring)

注:一个字符串类型键允许存储的数据的最大容量是512 MB
  • SET key value 设置key-value
  • GET key 获取key的value 键不存在时返回空值nil
  • MSET key1 value1 key2 value2 key3 value3 同时设置多个key-value
  • MGET key1 key2 key3 同时获取key的value 键不存在时返回空值nil
  • INCR key 递增key值 当key不存在时,默认从0开始递增1,当key不是整数时,返回异常(error) WRONGTYPE Operation against a key holding the wrong kind of value
  • INCRBY key increment 指定步长增加key值
  • DECR key increment 递减key值
  • DECRBY key increment 指定步长减少key值
例:DECRBY key 5 = INCRBY key -5
  • INCRBYFLOAT key increment 增加指定浮点数
  • APPEND key value 向键值末尾追加值,若键不存在,则作用等于set
例:set key hello 输出:hello
例:append key " world" 输出:hello world
  • STRLEN key 获字符串长度,键值不存在返回0
位操作(二进制操作)
  • GETBIT key offest
  • SETBIT key offest value
  • BITCOUNT key [start] [end]
  • BITOP operation destkey key [key …]

2、散列类型(hash)

注:hash类型不能嵌套其它的数据类型,一个hash类型键可以包含至多2³² - 1 个字段。适合存储对象
  • HSET key field value 设置key的字段值
  • HGET key field 获取key的字段的值
  • HGETALL key 获取key的所有字段的值
  • HMSET key field value [field value …] 批量设置key的字段值
  • HMGET key field [field …] 批量获取key的字段值
  • HEXISTS key field 判断字段是否存在
  • HSETNX key field value 字段存在不做操作、不存在则赋值
  • HINCRBY key field increment 指定field 增长指定步长increment
  • HDEK key field [field …] 删除指定字段
  • HKEYS key 只获取字段
  • HVALS key 只获取字段的值
  • HLEN key 获取字段数量

3、列表类型(list)

注:存储一个有序的字符串列表。一个列表类型键最多能容纳2³²-1个元素
  • LPUSH key value [value…] 向列表左边增加元素,返回值表示增加元素后列表的长度
  • RPUSH key value [value…] 向列表右边增加元素,返回值表示增加元素后列表的长度
  • LPOP key 将列表左边的元素从列表中移除,返回被移除的元素值
  • RPOP key 将列表右边的元素从列表中移除,返回被移除的元素值
注:栈 后进先出 LPUSH和LPOP或RPUSH和RPOP 队尾进队尾出
注:队列 先进先出 LPUSH和RPOP或RPUSH和LPOP 队尾进队头出
  • LLEN key 获取列表中元素个数
  • LRANGE key start stop 获取列表中某一段元素
  • LREM key count value 删除列表中前count个值为value的元素,返回值是实际删除的元素个数
注:根据count值的不同,LREM命令的执行方式会略有差异
  1. 当count > 0时LREM命令会从列表左边开始删除前count个值为 value的元素
  2. 当count < 0时LREM命令会从列表右边开始删除前count个值为value的元素
  3. 当count = 0是LREM命令会删除所有值为value的元素
  • LINDEX key index 获取指定索引的值
  • LSET key index value 设置指定索引的值
  • LTRIM key start end 删除指定索引范围之外的所有元素
  • LINSERT key BEFORE|AFTER field value 根据before|after 来判断数据加入到field的前面还是后面,返回元素个数
  • RPOPLPUSH list1 list2 将元素从list1 转移到list2

4、集合类型(set)

注:一个集合类型(set)键可以存储至多2³²-1个字符串。一个集合中不会存在相同的元素
  • SADD key value [value…] 向集合中增加一个或多个元素,返回成功加入的元素的数量,如果键不存在则创建
  • SREM key value [value…] 从集合中删除一个或多个元素,并返回删除成功的个数
  • SMEMBERS key 获取集合中的所有元素
  • SISMEMBER key value 判断元素是否在集合中
  • SDIFF key [key…] 多个集合执行差集运算,返回结果
  • SDIFFSTORE des key [key…] 多个集合执行差集运算,结果写入名为des的集合中
  • SINTER key [key…] 多个集合执行交集运算,返回结果
  • SINTERSTORE des key [key…] 多个集合执行交集运算,结果写入名为des的集合中
  • SUNION key [key…] 多个集合执行并集运算,返回结果
  • SUNION key [key…] 多个集合执行并集运算,结果写入名为des的集合中
注:差集:A - B = {x| x∈A且x∈/ B} 所有属于A且不属于B的元素构成的集合
注:交集:A ∩ B = {x | x ∈ A且x∈B}所有属于A且属于B的元素构成的集合
注:交集:A u B = {x | x ∈ A或x∈B}所有属于A或属于B的元素构成的集合
  • SCARD key 获取集合元素个数
  • SRANDMENBER key [count] 随机获取集合中的元素 count参数来一次随机获得多个元素
注:1、当count > 0: 从集合里获得count个不重复的元素
注:2、当count < 0: 从集合里获得 |count| 个元素,元素可重复
  • SPOP key 从集合中随机弹出一个元素,并返回元素,集合中删除此元素

5、有序集合类型(zset)

  • ZADD key score value 向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。ZADD命令的返回值是新加入到集合中的元素个数(不包含之前已经存在的元素)。
  • ZSCORE key value 获取元素的分数
  • ZRANGE key start stop [WITHSCORES] 按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
  • ZREVRANGE key start stop [WITHSCORES] 按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offest count] 获得指定分数范围的元素
  • ZINCRBY key increment value 增加某个元素的分数,如果指定的元素不存在,Redis在执行命令前会先建立它并将它的分数赋为0再执行操作。
  • ZCARD key 获取集合中的元素个数
  • ZCOUNT key min max 获取集合中的指定分数范围的元素个数
  • ZREM key value [value…] 删除一个或多个元素,返回删除成功的元素个数
  • ZREMRANGEBYRANK key start stop 按照排名范围删除元素
  • ZREMRANGEBYSCORE key min max 按照分数范围删除元素
  • ZRANK key value 按照元素分数从小到大的顺序获得指定的元素的排名(从0开始,即分数最小的元素排名为0)
  • ZREVRANK key value 按照元素分数从大到小的顺序获得指定的元素的排名(从0开始,即分数最小的元素排名为0)