# Redis Zrevrange 复杂度
## 简介
Redis是一个开源的内存数据存储系统,常用于缓存、消息中间件和数据库。它支持多种数据结构,包括字符串、列表、哈希表、集合和有序集合。有序集合是一种特殊的数据结构,它的成员是唯一的,但每个成员都关联一个分数,通过分数来排序。
Redis提供了多个操作有序集合的命令,其中之一是ZREVRANGE。这个命令可以按照分数从高到低的顺序,返回有
原创
2024-01-12 08:36:34
246阅读
一. 对象的类型与编码 Redis使用对象来表示数据库中的键和值,每次在redis数据库中新创建一个键值对时,我们至少会创建两个对象,分别用作键值对的键和值 Redis中的每个对象都由一个redisObject结构表示,该结构和保存数据有关的三个属性分别是type,encoding,和ptr属性。 Type:包括五种:REDIS_STRING,REDIS_LIST,REDIS_HASH,REDIS
转载
2023-10-13 21:49:34
58阅读
一 压缩列表压缩列表是List、Hash、SortSet的底层实现。 如果我们要查找定位第一个元素和最后一个元素,可以通过表头三个字段的长度直接定位,复杂度是 O(1)。而查找其他元素时,就没有这么高效了,只能逐个查找,此时的复杂度就是 O(N) 了。二 跳跃表跳表在链表的基础上,增加了多级索引,通过索引位置的几个跳转,实现数据的快速定位,如下图所示: 这个查找过程就是在多级索引上跳来跳去,最后定
转载
2024-03-11 10:35:08
74阅读
五种数据结构字符串哈希列表集合有序集合stringhashlistsetsortedset一、字符串stringredis中的字符串结构可以保存多种数据类型例如:简单的字符串、json、xml、二进制。但是其值的最大长度为512MB。1. 基本操作set1. set key value [ex] [px] [nx|xx]
ex : 秒级过期时间
px : 毫秒级过期时间
转载
2023-07-09 19:20:34
90阅读
更新时间:2018-10-15Redis的特性速度快持久化(断电不丢数据)多种数据结构支持多种客户端语言功能丰富操作简单主从复制高可用,分布式Redis的通用命令keys:计算键key * # 遍历所有keykeys命令支持正则匹配,如keys h*表示便利店以h开头的所有key。因为redis是单线程,keys命令一般不在生产环境中使用。keys *怎么用?热备从节点scandbsize:计算k
转载
2024-03-05 08:49:29
47阅读
Redis中压缩链表ziplist数据结构与API相关文件是:ziplist.h, ziplist.c, t_zset.c。 一、ziplist的构成<zlbytes><zltail><zllen><entry><entry><zlend><zlbytes>是一个4字节无符号整数,用来存储整个ziplist占用的字
转载
2024-08-20 10:13:35
83阅读
string (字符串) 字符串 string 是 Redis 最简单的数据结构。Redis 所有的数据结构都是以唯一的 key字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不同类型的数据结构的差异就在于 value 的结构不一样。list (列表)Redis 的列表相当于 Java 语言里面的 LinkedList,注意它是链表而不是数组。这意味着list
转载
2023-10-14 02:11:45
77阅读
Redis 的网络 IO 和键值对读写是由主线程完成的,网络 IO 有时候会比较慢,但是 Redis 使用了 IO 多路复用机制,避免了主线程一直处在等待网络连接或请求到来的状态,所以,网络 IO 不是导致 Redis 阻塞的因素。键值对的增删改查操作是 Redis 和客户端交互的主要部分,复杂度高的增删改查操作肯定会阻塞 Redis。怎么判断操作复杂度是不是高呢?就是看操作的复杂度是否为 O(N
转载
2023-09-19 16:16:39
39阅读
Redis为什么比mysql快?1.Redis是基于内存存储的,MySQL是基于磁盘存储的2.Redis存储的是k-v格式的数据。时间复杂度是O(1),常数阶,而MySQL引擎的底层实现是B+Tree,时间复杂度是O(logn),对数阶。Redis会比MySQL快一点点。3.MySQL数据存储是存储在表中,查找数据时要先对表进行全局扫描或者根据索引查找,这涉及到磁盘的查找,磁盘查找如果是按条点查找
转载
2023-06-30 19:19:12
181阅读
1.del key1 key2````` 加入版本1.0.0。时间复杂度:O(n)N为要移除的key的数量。移除单个字符串类型的key,时间复杂度为O(1)。移除单个列表、集合、有序集合或哈希表类型的key,时间复杂度为O(M),M为以上数据结构内的元素数量。 如果删除的key不存在,则直接忽略。 返回值 整数:被删除的keys的数量 2.dump key 加入版本2.6.0。时间复杂度:查找
转载
2023-10-17 14:59:19
74阅读
Redis存储类型:
string(字符串):最大为512MB,是最基本的数据类型
hash(哈希):key value的键值对格式
list(列表):数组 字符串列表
set(集合)及zset(sorted set:有序集合):通过哈希表实现,时间复杂度为o(1)
Redis的优点;
1:操作速度速度快,时间复杂度为o(1)。
2:数据类型的多样新;如上。
3:定时同步异步操作将数据刷新到磁盘中
转载
2023-06-28 18:27:38
298阅读
redis本身是开源的C语言编写的k-v存储系统,他支持String、List、Set、ZSet、hash五种数据结构,每种数据结构底层是如何实现的?其数据结构为什么?1. String1.1 结论底层结构:指针+字符数组时间复杂度:O(1)1.2 表格1.3 底层原理Redis是C语言开发的,但在C语言中并没有字符串类型,只能使用指针和字符数组的形式来保存一个字符串。所以Redis设计了一个简单
转载
2023-06-29 11:15:02
209阅读
文章目录1 keys 全局遍历建2 SCAN 渐进式遍历键2.1 为什么count和实际返回的数量有可能不一致2.2 SCAN 命令的保证(guarantees)2.3 SCAN 命令每次执行返回的元素数量2.3.1 COUNT 选项 1 keys 全局遍历建keys:全量遍历键,用来列出所有满足特定正则字符串规则的key,假设redis此时正在生产环境下,使用该命令就会造成隐患,当redis数
转载
2023-08-20 19:37:16
160阅读
String类型命令时间复杂度set0(1)get0(1)del0(k),k是键的个数mset0(k),k是键的个数mget0(k),k是键的个数incr0(1)decr0(1)incryby0(1)decryby0(1)incrybyfloat0(1)append0(1)strlen0(1)setrange0(n),n为更改字符串长度getrange0(n),n为获取字符串长度Hash类型命令时
转载
2023-07-04 11:43:23
284阅读
跳跃表1. 跳跃表的用处2. 跳跃表的具体示例跳跃表的查找跳跃表的具体实现本文重点 1. 跳跃表的用处有序集合(zset)的底层可以采用数组, 链表, 平衡树等结果来实现, 但是他们都有各自的缺点 . 数组方便查询, 但不便于插入和删除, 链表方便插入和删除, 但是不利于查找, 平衡树/红黑树效率高但是实现起来很复杂所以Redis自己实现了跳跃表来来当做有序集合(zset)的底层实现, 他的查询
转载
2024-04-08 10:57:33
26阅读
Redis基础、常用类型介绍、时间复杂度目录概述Redis的数据结构和相关常用命令数据持久化内存管理与数据淘汰机制Pipelining事务与ScriptingRedis性能调优主从复制与集群分片Redis Java客户端的选择概述redis.cn:http://www.redis.cn/commands.html Redis是一个开源的,基于内存的结构化数
转载
2023-09-04 11:41:42
192阅读
一、常用的全局命令 1、查看所有的键: KEYS * KEYS pattern:查找所有符合给定模式 pattern 的 key 。 KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 key ,你最好还是用 Redis 的集合结构(set)来代替。
转载
2023-08-13 19:31:18
157阅读
一、链表复习数组与链表区别:数组需要一块连续的内存来存储,这个特性有利也有弊。好处是其支持根据索引下标"随机访问"(时间复杂度为O(1),数组中按照下标随机访问的时间复杂度是O(1)),但是其插入与删除操作为了保证在内存中的连续性将会变得非常低效(时间复杂度为O(N)),并且其一经声明就要占用整块连续内存空间,如果声明过大,系统可能内存不足,声明过小又可能导致不够用,而当数组的空间不足的时候需要对
转载
2024-06-24 18:06:04
119阅读
基于redis是单线程的,使用的Redis的,有必要有意识的从是否存在极大value的情况,且出现频繁,访问Redis并发的场景,比如一个命令耗时10ms,然后每s并发100,那基本上redis都会阻塞在这个命令上了;我们先看Redis的几个常见命令时间复杂度:keys * 返回所有的key,keys命令最好不要在生产环境用,
转载
2023-05-25 11:13:40
858阅读
关于redis数据类型操作的应用场景及时间复杂度String类型命令时间复杂度和应用场景string类型高时间复杂度的命令汇总List类型的命令的时间复杂度和应用场景列表数据类型命令时间复杂度高的命令SET类型的基本命令时间复杂度及应用场景ZSET类型的命令的时间复杂度及应用场景HASH类型命令及其时间复杂度 String类型命令时间复杂度和应用场景set key value 时间复杂度: O(
转载
2024-06-28 13:46:15
69阅读