【总结】为什么ITOO学生端Redis采用list结构
来源:互联网 发布:login incorrect linux 编辑:程序博客网 时间:2024/05/07 13:52
在Redis的文档里,每一个命令的时间复杂度都用大O表示法进行了描述,还能知道各命令的具体性能会受什么因素影响。让我们来看看一些用例。
【常数】时间复杂度O(1)被认为是最快速的,无论我们是在处理5个元素还是5百万个元素,最终都能得到相同的性能。对于sismember
命令,其作用是告诉我们一个值是否属于一个集合,时间复杂度为O(1)。sismember
命令很强大,很大部分的原因是其高效的性能特征。许多Redis命令都具有O(1)的时间复杂度。
【对数】时间复杂度O(log(N))被认为是第二快速的,其通过使需扫描的区间不断皱缩来快速完成处理。使用这种“分而治之”的方式,大量的元素能在几个迭代过程里被快速分解完整。zadd
命令的时间复杂度就是O(log(N)),其中N是在分类集合中的元素数量。
【线性】时间复杂度O(N),在一个表格的非索引列里进行查找就需要O(N)次操作。ltrim
命令具有O(N)的时间复杂度,但是,在ltrim
命令里,N不是列表所拥有的元素数量,而是被删除的元素数量。从一个具有百万元素的列表里用ltrim
命令删除1个元素,要比从一个具有一千个元素的列表里用ltrim
命令删除10个元素来的快速(实际上,两者很可能会是一样快,因为两个时间都非常的小)。
根据给定的【最小和最大的值】的标记,zremrangebyscore
命令会在一个分类集合里进行删除元素操作,其时间复 杂度是O(log(N)+M)。这看起来似乎有点儿杂乱,通过阅读文档可以知道,这里的N指的是在分类集合里的总元素数量,而M则是被删除的元素数量。可 以看出,对于性能而言,被删除的元素数量很可能会比分类集合里的总元素数量更为重要。
对于sort
命令,其时间复杂度为O(N+M*log(M))。
这是我为什么用list结构的原因,因为ltrim
命令具有O(N)的时间复杂度。
因为现在的底层只有get,set这种散列数据结构,把一个list以一个关键字的形式存储,每次想查找里面的数据都得把数据导出来然后筛选完了重新放进去,这样子的效率总是觉得很低。
- 【总结】为什么ITOO学生端Redis采用list结构
- ITOO考评学生端性能优化——Redis
- ITOO学生端—动态拼接试卷(1)
- ITOO学生端—动态拼接试卷(2)
- istudy学生端项目的总结(一)
- istudy学生端项目的总结(二)
- 破解学生端
- 跳出学生端程序
- ITOO总结
- 学生端W7搜IP
- 电脑课学生端密码查看
- 【ITOO】为什么使用EF?
- 为什么redis中会采用skiplist
- 为什么计算机网络要采用分层结构
- 伽卡他卡学生端关闭
- Redis skip list结构分析
- Redis skip list结构分析
- redis List链表结构
- JS 生成从n~m的随机数字
- 不能错过的 10 篇 Java 热文
- JS字符串包含
- 每天都要有个为自己的计划。 照着来,这样才能有效率
- JS 基础教程八
- 【总结】为什么ITOO学生端Redis采用list结构
- JS 基础教程九
- 导致kettle脚本异常的sql:FIELDS TERMINATED BY ';'
- JS 基础教程十
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- MFC消息流动的内部实现
- Android点击home键重启的解决
- windows安装配置mysql-5.7.13-winx64方法
- tomcat配置、MySQL配置、git安装、TortoiseGit安装与配置、myeclipse2015破解