redis数据结构
string
list
set
sort set
hash
redis命令大全
-
通用命令
命令 功能 时间复杂度 keys * 通过模式匹配获得符合的key,容易阻塞redis线程,慎用 O(N) exists key 验证key是否存在(0表示不存在,1表示存在) O(1) type key 查看value的类型 O(1) expire key 设置key的过期时间,单位为s O(1) pexpire key 设置key的过期时间,单位为ms O(1) expireat key 设置key在什么时间过期,value为未来时刻的一个时间戳,精确到m O(1) pexpireat key 设置key在什么时间过期,value为未来时刻的一个时间戳,精确到ms O(1) ttl key 查看key还有多久过期(-1表示永远不过期),单位为m O(1) pttl key 查看key还有多久过期(-1表示永远不过期),单位为ms O(1) del key 删除key O(1) -
string
常用命令:
命令 功能 时间复杂度 set key value 不管key是否存在,都设置key O(1) setnx key value 当key不存在的时候设置key O(1) setex key value seconds 设置key的同时设置过期时间,单位为m O(1) set key value xx 当key存在的时候更新key O(1) get key 获取key的value O(1) getset key value 获取key的value的同时设置新的value O(1) incr key 当value为整型时,每次递增1 O(1) decr key 当value为整形时,每次递减1 O(1) 高级命令:
命令 功能 时间复杂度 mset key value […key value] 一次设置多个key O(N) mget key […key] 一次获取获得value O(N) incrby key count 当value为整形时,每次递增count O(1) decrby key count 当value为整形时,每次递减count O(1) incrbyfloat key count 当value为数值时,每次递增count O(1) append key appstr 拼接字符串 O(1) strlen key 获取字符串的长度 O(1) getrange key start end 获取指定范围的字符 O(1) setrange key offset str 在指定位置设置字符 O(1) -
list
常用命令:
命令 功能 时间复杂度 lpush key value […value] 将一个或者多个值插入列表头部 O(1) lpop key 从列表头部弹出一个元素 O(1) rpush key value […value] 将一个或者多个值插入列表尾部 O(1) rpop key 从列表尾部弹出一个元素 O(1) blpop key 以阻塞模式从列表头部弹出一个元素 O(1) brpop key 以阻塞模式从列表尾部弹出一个元素 O(1) lrem key count value 从列表中删除count个value,count正负代表了方向 O(N) lrange key start end 取出从start到end的所有元素,start和end可以为负 O(N) ltrim key start end 将start到end范围之外的元素删除 O(N) llen key 查看列表长度 O(1) 高级命令:
命令 功能 时间复杂度 linsert key before/after oldvalue newvalue 在指定元素前/后插入元素 O(N) lindex key index 获取指定位置元素 O(N) lset key oldvalue newvalue 将列表中指定元素替换 O(N) -
set
常用命令:
命令 功能 时间复杂度 sadd key value […value] 向集合中添加元素 O(1) sismember key value 查看元素是否在集合中 O(1) smembers key 获取集合所有元素,不改变集合内部结构 O(N) srandmember key count 从集合中随机弹出一个元素,不改变集合内部结构 O(N) spop key 从集合中弹出一个元素,改变集合内部结构 O(N) srem key value 从集合中删除指定元素 O(1) scard key 获取集合长度 O(1) 高级命令:
命令 功能 时间复杂度 sinter source1 source2 求两个集合的交集 O(N) sinterstore source1 source2 dest 将两个集合的交集存储到目标集合 O(N) sdiff source1 source2 求source1-source2集合的差集 O(N) sdiff source1 source2 dest 将 source1-source2集合的差集存储到目标集合 O(N) sunion source1 source2 将两个集合的并集 O(N) sunion source1 source2 dest 将两个集合的并集存储到目标集合 O(N) -
sort set
常用命令:命令 功能 时间复杂度 zadd key score value [… score value] 向有序集合添加元素 O(M(logN)) zscore key value 获取指定元素的score O(1) zcard key 获取元素数量 O(1) zrem key value […value] 删除指定元素 O(1) zincrby key incrScore element 对指定元素加分数 O(1) zrange key start end [withscores] 获取升序排序的第start到end的元素 O(log(N)+M) zrevrange key start end [withscores] 获取降序排序的第start到end的元素 O(log(N)+M) zrangebyscore key minscore maxscore 获取指定分数范围内的元素 O(log(N)+M) zremrangebyscore key minscore maxscore 删除指定分数范围内的所有元素 O(log(N)+M) zcount key minscore maxscore 获取指定范围元素的数量 O(log(N)+M) zrank key value 获取升序排序指定元素的排名 O(log(N)) zrevrank key value 获取降序排序指定元素的排名 O(log(N)) zremrangebyrank key start end 根据排名删除元素 O(log(N)+M) 高级命令:
命令 功能 时间复杂度 zinterstore source1 source2 dest 将两个集合的交集存储到目标集合 O(log(N)+M) zunion source1 source2 dest 将两个集合的并集存储到目标集合 O(log(N)+M) -
hash
常用命令:
命令 功能 时间复杂度 hset key field value 设置field和value O(1) hmset key field value […field value] 批量设置field和value O(1) hget key field 获取value O(1) hmget key field […field] 批量获取field O(1) hgetall key 获取所有的field和value O(N) hkeys key 获取所有的field O(N) hvals key 获取所有的value O(N) hexists key field 判断是否拥有field O(1) hincrby key field count 对field自增count O(1) hlen key 获取key的field的数量 O(1) hdel key field 删除指定的field O(1)
更多问题可以加公众号:代码小栈,期待为您解决更多问题