当前位置: 首页 > news >正文

花乡科技园区网站建设中国风网站模板

花乡科技园区网站建设,中国风网站模板,深圳哪家网站建设好,可以做淘宝推广的网站文章目录 一、List 类型介绍二、List 类型相关命令2.1 LPUSH 和 RPUSH、LPUSHX 和 RPUSHX2.2 LPOP 和 RPOP、BLPOP 和 BRPOP2.3 LRANGE、LINDEX、LINSERT、LLEN2.4 列表相关命令总结 三、List 类型内部编码3.1 压缩列表#xff08;ziplist#xff09;3.2 链表#xff08;lin… 文章目录 一、List 类型介绍二、List 类型相关命令2.1 LPUSH 和 RPUSH、LPUSHX 和 RPUSHX2.2 LPOP 和 RPOP、BLPOP 和 BRPOP2.3 LRANGE、LINDEX、LINSERT、LLEN2.4 列表相关命令总结 三、List 类型内部编码3.1 压缩列表ziplist3.2 链表linkedlist 四、List 类型的应用场景4.1 消息队列4.2 微博列表 一、List 类型介绍 list 列表类型是用来存储多个有序的字符串列表中的每个字符串称为元素element一个列表最多可以存储 2^32 - 1 个元素。在 Redis 中可以对列表两端插人push和弹出pop还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是⼀种比较灵活的数据结构它可以充当栈和队列的角色在实际开发上有很多应用场景。 列表两端插入和弹出操作 列表的获取、删除等操作 列表类型的特点 列表中的元素是有序的这意味着可以通过索引下标获取某个元素或者某个范围的元素列表区分获取和删除的区别例上图 中的 lrem 1 b 是从列表中把从左数遇到的前 1 个 b 元素删除这个操作会导致列表的长度从 5 变成 4但是执行 lindex 4 只会获取元素但列表长度不会变化。列表中的元素是允许重复的例如下图中的列表中是包含了两个 a 元素的。 二、List 类型相关命令 2.1 LPUSH 和 RPUSH、LPUSHX 和 RPUSHX LPUSH 和 RPUSH LPUSH 命令的作用是将一个或多个元素从左侧头插插入到 list 中而 RPUSH 命令的作用则是将一个或多个元素从右侧尾插插入到 list 中。 语法 LPUSH key element [element ...]RPUSH key element [element ...]LPUSHX 和 RPUSHX LPUSHX 命令的作用是当 key 存在时将⼀个或者多个元素从左侧放⼊头插到 list 中不存在则直接返回而 RPUSHX 命令的作用是是当 key 存在时将⼀个或者多个元素从右侧放⼊头插到 list 中不存在则直接返回。 语法 LPUSHX key element [element ...]RPUSHX key element [element ...]2.2 LPOP 和 RPOP、BLPOP 和 BRPOP LPOP 和 RPOP LPOP 命令的作用是从左侧删除一个元素头删并返回删除的值而 RPOP 则是从右侧删除尾删然后返回删除的值。 语法 LPOP keyRPOP keyBLPOP 和 BRPOP BLPOP 和 BRPOP 命令的作用和LPOP 、 RPOP 一样只是需要指定一个超时时间如果没有元素可以删除的时候会进行阻塞如果在设定的超时时间内向 Redis 中插入元素则会立即执行否则超时则之间退出。 语法 BLPOP key [key ...] timeoutBRPOP key [key ...] timeout另外BLPOP 和 BRPOP 可以同时指定多个 key 进行删除。 2.3 LRANGE、LINDEX、LINSERT、LLEN LRANGE LRANGE命令的作用是获取从 start 到 stop 区间的所有元素区间左闭右闭并且指定的位置可以是负数表示倒数第几个。 语法 LRANGE key start stopLINDEX LINDEX 命令的作用是获取从左边开始第 index 位置的元素。 语法 LINDEX key indexLINSERT LINSERT 命令的作用是在特定的位置插入元素。 语法 LINSERT key BEFORE|AFTER pivot element说明 BEFORE 表示插入到 pivot 元素之前AFTER 表示插入到 pivot 元素之后。 LLEN LLEN 命令的作用是 获取 list 长度。 语法 LLEN key2.4 列表相关命令总结 以下是关于 Redis List 相关命令的总结包括命令、作用以及时间复杂度 命令作用时间复杂度LPUSH从列表左侧插入一个或多个元素O(N) N 为插入元素数量RPUSH从列表右侧插入一个或多个元素O(N) N 为插入元素数量LPUSHX如果列表存在从左侧插入一个或多个元素否则不执行操作O(1)RPUSHX如果列表存在从右侧插入一个或多个元素否则不执行操作O(1)LPOP从列表左侧删除并返回一个元素O(1)RPOP从列表右侧删除并返回一个元素O(1)BLPOP从左侧删除并返回元素如果列表为空则阻塞带有超时参数O(1) 或阻塞等待BRPOP从右侧删除并返回元素如果列表为空则阻塞带有超时参数O(1) 或阻塞等待LRANGE获取指定范围内的元素列表O(Slice Size)LINDEX获取指定位置的元素O(N) N 为索引位置LINSERT在指定元素前或后插入新元素O(N) N 为列表长度LLEN获取列表的长度O(1) 注意时间复杂度中的 “N” 表示操作的复杂度与列表的长度或插入元素的数量成线性关系而不是固定的常数时间。在实际使用中需要根据数据规模和性能要求选择适当的命令。 三、List 类型内部编码 Redis 中的 List 数据类型在内部可以使用不同的编码方式来存储数据具体的编码方式取决于列表的大小和元素的大小。下面将介绍两种常见的 List 内部编码方式 3.1 压缩列表ziplist 压缩列表ziplist是 Redis 中一种紧凑的、内存优化的列表编码方式适用于存储较小的列表或者列表中的元素都是较小的整数或字符串。压缩列表以连续的内存块的形式存储数据每个节点可以包含一个或多个元素这使得压缩列表在内存使用效率上有一定优势。 特点 压缩列表可以保存多个元素在一个节点中因此在元素较小的情况下它可以节省内存。压缩列表支持快速的元素访问因为可以通过索引直接访问元素。压缩列表适用于列表较小且元素较小的情况。 3.2 链表linkedlist 链表linkedlist是 Redis 中另一种列表的内部编码方式它更适合存储大型列表或者元素大小不一致的列表。链表中的每个节点包含一个元素以及指向前一个节点和后一个节点的指针这种结构使得链表在插入和删除元素时具有较高的效率。 特点 链表适用于列表较大或元素较大的情况因为它不需要连续的内存块可以更好地处理大型数据。链表对于插入和删除元素的操作更加高效因为只需要调整节点的指针而不需要移动大量数据。链表相对于压缩列表占用更多的内存因为需要额外的指针来维护节点之间的链接。 总之Redis 根据列表的大小和元素的大小自动选择使用压缩列表或链表来进行编码以平衡内存使用和操作效率。在选择数据结构和命令时需要考虑数据的规模和操作的性能需求。 示例 1当元素个数较少且没有大元素时内部编码为 ziplist 127.0.0.1:6379 rpush listkey e1 e2 e3 OK 127.0.0.1:6379 object encoding listkey ziplist2当元素个数超过 512 时内部编码为 linkedlist 127.0.0.1:6379 rpush listkey e1 e2 e3 ... 省略 e512 e513 OK 127.0.0.1:6379 object encoding listkey linkedlist3当某个元素的长度超过 64 字节时内部编码为 linkedlist 127.0.0.1:6379 rpush listkey one string is bigger than 64 bytes ... 省略 ... OK 127.0.0.1:6379 object encoding listkey linkedlist四、List 类型的应用场景 4.1 消息队列 Redis 可以使用 lpush brpop 命令组合实现经典的阻塞式生产者-消费者模型队列生产者客户端使用 lpush 从列表左侧插入元素多个消费者客户端使用 brpop命令阻塞式地从队列中 “争抢” 队首元素。通过多个客户端来保证消费的负载均衡和高可用性。 Redis 阻塞消息队列模型 分频道的消息队列 Redis 可以同样使用 lpush brpop 命令但通过不同的键模拟频道的概念不同的消费者可以通过 brpop 不同的键值实现订阅不同频道的理念。 4.2 微博列表 每个用户都有属于自己的微博列表 现需要分页展示文章列表。此时可以考虑使用列表类型因为列表不但是有序的同时支持按照索引范围获取元素。 1每篇微博使用哈希结构存储例如微博中 3 个属性title、timestamp、content hmset mblog:1 title xx timestamp 1476536196 content xxxxx ... hmset mblog:n title xx timestamp 1476536196 content xxxxx2向用户 的微博列表中添加微博使用 user:uid:mblogs 作为微博的键 lpush user:1:mblogs mblog:1 mblog:3 ... lpush user:k:mblogs mblog:93分页获取用户的微博列表例如获取用户1 的前 10 篇微博 keylist lrange user:1:mblogs 0 9 for key in keylist {hgetall key }此外此方案在实际中可能存在两个问题 1 n 问题。即如果每次分页获取的微博个数较多需要执行多次 hgetall 操作此时可以考虑使用 pipeline流水线模式批量提交命令或者微博不采用哈希类型而是使用序列化的字符串类型使用 mget 获取。分页获取文章时lrange 在列表两端表现较好获取列表中间的元素表现较差此时可以考虑将列表做拆分。
http://www.zqtcl.cn/news/428889/

相关文章:

  • 帮建网站网页设计师考试内容
  • seo网站开发txt 发布 wordpress
  • 资讯门户类网站模板定制系统开发公司
  • 让网站快速收录初中毕业如何提升学历
  • 石家庄做网站价格seo优化效果
  • 为什么浏览器打开是2345网址导航seo免费资源大全
  • 网站工程是干啥的动态个人网页制作html教程
  • 阿里云多网站建设wordpress 统计分析
  • 长沙网站定制公司科技特长生
  • 查公司的口碑和评价的网站中学生怎么做网站
  • 做网站买空间多少钱深圳seo优化公司
  • 中国建设银行北京市互联网网站wordpress商城购物表单
  • 万网网站备案管理查询工程建设项目的网站
  • 网站建设国内外研究现状模板ppt设计大赛
  • 专业网站优化方案网站设计过程怎么写
  • 福州定制网站建设网站ip过万
  • wordpress网站评论插件厦门软件网站建设
  • 网站黄金比例wordpress转typecho
  • 重庆有哪些网络公司百度系优化
  • 无锡网站制作方案企业三合一建站公司怎么找
  • 钉钉crm客户管理系统免费seo网站推荐一下软件
  • wordpress公司网站模版怎么显示wordpress里元素的源代码
  • 泉州网站制作运营商专业wordpress评论软件
  • 网站开发是什么意思啊有没有帮人做简历的网站
  • 企业网站模板包含什么维度 网站建设
  • 个人备案做运营网站宁波建网站模板
  • 做网站需要懂什么软件合肥网站制作套餐
  • 中国建设银行官方网站纪念钞预约网上买手表哪个网站可以买到正品
  • 哪个网站做兼职可以赚钱浙江嘉兴最新事件
  • 苍南网站建设深圳百度关键字优化