Redis命令时间复杂度查询表
String类型
| 命令 | 时间复杂度 |
| set | 0(1) |
| get | 0(1) |
| del | 0(k),k是键的个数 |
| mset | 0(k),k是键的个数 |
| mget | 0(k),k是键的个数 |
| incr | 0(1) |
| decr | 0(1) |
| incryby | 0(1) |
| decryby | 0(1) |
| incrybyfloat | 0(1) |
| append | 0(1) |
| strlen | 0(1) |
| setrange | 0(n),n为更改字符串长度 |
| getrange | 0(n),n为获取字符串长度 |
Hash类型
| 命令 | 时间复杂度 |
| hset | 0(1) |
| hget | 0(1) |
| hdel | 0(k),k是键的个数 |
| hlen | O(1) |
| hgetall | 0(k),k是field的个数 |
| hmget | 0(k),k是field的个数 |
| hmset | 0(k),k是field的 个数 |
| hexists | O(1) |
| hkeys | 0(k),k是field的个数 |
| hvals | 0(k),k是field的个数 |
| hsetnx | O(1) |
| hincrby | O(1) |
| hincrbyfloat | O(1) |
| hstrlen | O(1) |
List列表
| 命令 | 时间复杂度 |
| rpush | 0(k),k是field的个数 |
| lpush | 0(k),k是field的个数 |
| linsert | 0(n),n是插入位置距离表头或表尾的距离 |
| lrange | O(s+n),s是start的偏移量,n是start到end的范围 |
| lindex | O(n),n是索引的偏移量 |
| llen | O(1) |
| lpop | O(1) |
| rpop | O(1) |
| lrem | O(n),n是列表的长度 |
| ltrim | O(n),n是要裁剪的元素总数 |
| lset | O(n),n是索引的偏移量 |
| blpop | O(1) |
Set集合
| 命令 | 时间复杂度 |
| sadd | O(k),k为元素个数 |
| srem | O(k),k为元素个数 |
| scard | O(1) |
| sismember | O(1) |
| srandmember | O(count) |
| spop | O(1) |
| smembers | O(n),n为元素总数 |
| sinter | O(m*k),k为多个集合中元素较少的个数,m是键个数 |
| suinon | O(k),k为多个集合元素个数和 |
| sdiff | O(k),k为多个集合元素个数和 |
Zset有序集合
| 命令 | 时间复杂度 |
| zadd | O(k*log(n)),k为添加 成员个数,n为当前成员个数 |
| zcard | O(1) |
| zscore | O(1) |
| zrank zrevrank | O(log(n)),n为当前成员个数 |
| zrem | O(k*log(n)),k为删除成员个数,n为当前成员个数 |
| zincrby | O(log(n)),n为当前成员个数 |
| zrange zrevrange | O(log(n)+k),k为要获取成员个数,n为当前成员个数 |
| zrangebyscore zrevrangebyscore | O(log(n)+k),k为要获取成员个数,n为当前成员个数 |
| zcount | O(log(n)+k),k为要获取成员个数,n为当前成员个数 |
| zremrangebyrank | O(log(n)+k),k为要删除成员个数,n为当前成员个数 |
| zremrangebyscore | O(log(n)+k),k为要删除成员个数,n为当前成员个数 |
| zinterstore | O(nk) + O(mlog(m)),n是成员数最小的有序集合的成员个数,k是有序集合的个数,m是结果集中成员个数 |
| zunionstore | O(n) + O(m*log(m)),n是所有有序集合成员个数和,m是结果集中成员个数 |