redisAPI命令和数据结构详解

通用命令

  • keys 所有key
  • dbsize 显示数据库大小
  • exists key 判断key是否存在
  • del key [key …] 删除key
  • expire key seconds 设置key的过期时间
  • type key key的类型

keys

这个命令显示所有key

keys *

keys 还可以用来查看多个符合条件的key。比如下面这个查看ph开头的key.

keys ph*

dbsize

这个命令显示数据库有多少个key。

执行这个会显示1.

set hello world
dbsize

exists

这个命令判断key是否存在

set hello world
exists hello //1
exists hell //0

del

这个命令删除key

set hello world
del hello //1
del hello //0

expire

设置1秒后过期

set hello world
expire hello 1

查看剩余的过期时间

ttl hello

去掉过期时间

persist hello

type

查看数据类型,因为redis支持多种数据类型。

set hello world
type hello //string

字符串类型

字符串类型常用的命令就是set,get,del

还有其他的:

  • incr key key自增1
  • decr key key自减1
  • incrby key x key自增x
  • decrby key x key自减x
  • setnx key value key不存在才会设置。相当于新增
  • set key value xx key存在才会设置。相当于更新,把key更新成value
  • setex key 5 value 设置key 5秒后过期
  • mset key value key value 设置多个key value
  • mget key key key 获取多个key
  • getset key value 设置value后返回旧value
  • append key value 把value追加到原来的值的后面
  • strlen key 显示字符串长度
  • incrybyfloat key 3.5 支持自增小数
  • getrange key start end 获取指定区间的值
  • setrange key offset vlaue 从指定位置设置值

hash类型

  • hget key field 获取hash key 对应的 field的value
  • hset key field value 设置hash field value
  • hdel key field 删除 hash key 对应的field
  • hgetall key 获取key下的所有hash数据
  • hvals key 获取key下的所有hash值,不包括field
  • hkeys key 获取key下的所有hash field,不包括value
  • hexists key field 判断 key 下的 field是否存在
  • hlen key 判断hash有多少field
  • hmset key field value … 设置多个field value
  • hmget key field field 获取多个field

上面字符串的命令,其实hash都可以使用,比如:

  • hsetnx
  • hincryby
  • hincrybyfloat

list 类型

添加

  • rpush key value … 从列表右边插入值
  • lpush key value … 从列表左边插入值
  • linsert key before|after value newValue 在值的前或后面插入新值

删除

  • lpop key 从列表左边弹出值
  • rpop key 从列表右边弹出值
  • lrem key count value 从列表删除count个值,count=0全删,count>0从左边删除count个,count < 0从右边删除count个
  • ltrim key start end 只保留列表start到end的值

查询

  • lrange key start end 获取start到end的值
  • lindex key index 获取index下表的值
  • llen key 获取列表的长度

更新

  • lset key index newValue 更新这个下表的值

阻塞获取,空列表会阻塞,当有数据插入才会获取。

  • blpop
  • brpop

set 类型

  • sadd key value 集合里面添加元素
  • srem key value 集合里面删除元素
  • scard key 获取集合长度
  • sismember key value 判断value是否在key中
  • srandmember key count 从集合随机挑选count个元素
  • spop key count 从集合随机弹出count个元素,弹出后集合里就没有了
  • smembers key 获取集合所有元素
  • sdiff key key 获取多个集合不同的元素,差集
  • sinter key key 获取相同的元素,交集
  • sunion key key 获取全部元素,并集

zset 类型

有序集合一般用来做排行榜。是根据分数来排序的

  • zadd key score value 添加分数和值。
  • zcard key 获取有序集合的数量
  • zrem key value 删除值
  • zincrby key score value 给值增加分数或者减少分数score可以是负的
  • zscore key value 获取值的分数
  • zrange key start end 获取有序集合的数据,数据按分数从小到大排序
  • zrevrange key start end 获取数据,这个获取的按分数从大到小排序
  • zrangebyscore key start end 按照分数获取数据
  • zcount key start end 按照分数获取数量
  • zremrangebyrank key start end 按照排名删除数据