redis常用数据类型
string
string相当于Java的String
常用命令
INCR/DECR INCRBY/DECRBY
GET/SET MGET/MSET GETSET APPEND
SET 赋值操作 O(1)
SET key value [EX seconds] [PX milliseconds] [NX|XX]
- EX 过期参数单位为秒
- PX 过期参数单位为毫秒
- NX key不存在时赋值
- XX key存在时赋值
对已存在的key执行SET会使原key的ttl失效
使用场景
存储 计数器 分布式锁
list
list(列表)相当于Java的LinkedList,一般当做队列(右进左出)或栈(右进右出)使用
常用命令
LPUSH/RPUSH LPOP/RPOP/BLPOP/BRPOP RPOPLPUSH/BRPOPLPUSH LRANGE LREM LLEN
LPUSH 将一个或多个元素element放至列表key的头部 O(1) 阻塞版BLPUSH
LPUSH key element [element ...]
RPOP 将列表key的尾部元素取出并返回 O(1) 阻塞版BRPOP
RPOP key
RPOPLPUSH 将列表source的尾元素放至列表destination的头部,并返回该列表 O(1)
RPOPLPUSH source destination
LRANGE 返回列表key中[start,stop]区间内的元素 O(s+n) s为start,n为区间内元素数量
LRANGE key start stop
start/stop值得说明:0表示第一个元素 1表示第二个元素 -1表示最后一个元素 -2表示最后第二个元素。故获取list所有元素就是LRANGE key 0 -1
。start/stop超出list范围不会引起错误
使用场景
消息队列 监视器
hash
hash(字典)相当于Java的HashMap。
常用命令
HSET/HGET/HDEL/HEXISTS/HSETNX HMSET/HMGET HGETALL HINCRBY/HINCRBYFLOAT LREM LLEN
HSET 将一个或多个hash中field的值设置为value 一对field/value的时间复杂度O(1),n对field/value即为O(n)
HSET key field value [field value ...]
HMSET于4.0之后计划废弃
HSETNX 当且仅当field未存在于hash时,将它的值设置为value O(1)
HSETNX key field value
返回1:执行成功;返回0:hash已存在该field或执行失败
HGET 返回hash中给定field的值 O(1)
HGET key field
HMGET 返回hash中一个或多个field的值。 O(n)
HMGET key field [field ...]
当key不存在时,返回含有nil的列表
HINCRBY 为hash中field的值增加increment,increment可为负数 O(1)
HINCRBY key field increment
HGETALL 返回hash中所有的field和value O(n) n为hash大小
HGETALL key
使用场景
存储
set
set(集合)相当于Java的HashSet。
常用命令
SADD/SREM SPOP SISMEMBER SMEMBERS SCARD SINTER/SUNION/SDIFF
SADD 将一个或多个member元素加入到set中,已经存在的member元素将被忽略 一个member元素的时间复杂度O(1),n个member即为O(n)
SADD key member [member ...]
SREM 将一个或多个member元素从set中删除 O(n)
SREM key member [member ...]
SMEMBERS 返回set中的所有元素 O(n)
SMEMBERS key
使用场景
去重 标签
zset
zset(有序列表),类似于Java中SortedSet和HashMap的结合体
常用命令
ZADD/ZREM ZSCORE ZCARD ZCOUNT ZRANGE/ZREVRANGE ZRANK/ZREVRANK
ZADD 将一个或多个元素添加到zset中 时间复杂度O(MlgN)*,M代表添加的元素个数,N代表zset中元素个数
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
- NX 仅member不存在时添加,存在时无操作
- XX 仅member存在时更新其score,不存在时无操作
- CH 返回更新的member数量;ZADD默认返回新增member的数量
- INCR 自增member的score,相当于ZINCRBY,只有一对member/score有效
ZREM 删除zset中一个或多个member 时间复杂度O(MlgN)*,M代表删除的元素个数,N代表zset中元素个数
ZREM key member [member ...]
ZSCORE 返回zset中member的score,member不存在则返回nil O(1)
ZSCORE key member
ZRANGE 返回zset中score为[start,stop]区间内的元素,升序排列 O(lgN+M) M代表返回的元素个数,N代表zset中元素个数
ZRANGE key start stop [WITHSCORES]
使用场景
延时队列 排名
参考
- redis指令文档 https://redis.io/commands