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]

使用场景

延时队列 排名



参考
原文地址:https://www.cnblogs.com/niceboat/p/12288061.html