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

做学校网站的目的做网站需要哪些程序

做学校网站的目的,做网站需要哪些程序,网站建设哪家网站建设好,海报设计思路目录 List 类型基本概念 List 类型特点 List 操作命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP RPOP LINDEX LINSERT LREM LTRIM LSET 阻塞版本的命令 阻塞版本 和 非阻塞版本的区别 BLPOP BRPOP List 类型基本概念 Redis 中的列表#xff08;list BRPOP List 类型基本概念 Redis 中的列表list相当于 数组 或者 顺序表 列表 list约定最左侧的元素下标为 0且支持使用 负数下标 注意 list 内部的编码方式并非是一个简单的数组而是类似于 双端队列deque这种设计使得 list 两侧均能进行高效的插入删除且时间复杂度均为 O(1) List 类型特点 1、列表中的元素都是有序的 有序的含义 要根据上下文进行区分有的时候谈到有序指的是 升序 或 降序有的时候谈到有序指的是 顺序很关键此处列表中的元素都是有序的指的是 列表中的顺序很关键即把列表元素位置颠倒、顺序调换此时得到的 新 list 和 旧 list 是不等价的 注意 同一个词该如何理解需要结合上下文、结合具体场景 实例理解 栈/堆数据结构、操作系统、JVM同步同步和互斥 、 同步和异步 2、列表中的元素允许重复 Redis 中 hash 类型其 field 不能重复 小总结 Redis 的典型应用场景就是作为消息队列最早的时候就是通过 list 类型来实现的但后来 Redis 又提供了 stream 类型来专门针对消息队列 List 操作命令 LPUSH 将 一个 或 多个 元素从左放入到 list 中相当于头插lpush —— left push 语法 lpush key element [element ...] 时间复杂度 O(1) 返回值 插入后 list 的长度 实例理解 该列表中 元素 4 在最前面因为 lpush 相当于 头插 注意 如果当前 key 已存在且 key 对应的 value 类型不为 list则 lpush 命令将报错 LPUSHX 当 key 存在时将一个或多个元素从左侧放入 到 list 中相当于头插当 key 不存在时则直接返回 0 lpushx —— left push exists 语法 lpushx key element [element ...] 时间复杂度 O(1) 返回值 插入后 list 的长度 实例理解 RPUSH 将 一个 或 多个 元素从右侧放入到 list 中相当于尾插rpush —— right push 语法 rpush key element [element ...] 时间复杂度: O(1) 返回值 插入后 list 的长度 实例理解 该列表中 元素 1 在最前面因为 rpush 相当于 尾插 RPUSHX 当 key 存在时将一个或多个元素从右侧放入 到 list 中相当于尾插当 key 不存在时则直接返回 0rpushx —— right push exists 语法 rpush key element [element ...] 实例理解 LRANGE 用于查看 list 中指定范围的元素  语法 lrange key start stop 此处描述的区间为 闭区间且下标支持负数 时间复杂度 O(N) 实例理解 注意点一 此处的序号是专门给结果集使用的序号 和 list 下标无关 可以看到当我们进行 hash 操作时也会得到这种带有序号的结果集此处的序号仅仅是标识下标返回元素的顺序 和 下标无关hash 类型就没有下标的概念 注意点二 当使用 lrange 命令返回指定范围的元素时如果提供的下标超出了列表下标范围这时 lrange 命令会如何处理呢 答案 如果给定区间非法如超出下标lrange 命令将尽可能的获取到给定区间的元素不会报错 LPOP  从 list 左侧取出元素相当于 头删 语法 lpop key 时间复杂度 O(1) 返回值 取出的元素或者 nil 实例理解 RPOP 从 list 右侧取出元素相当于 尾删 语法 rpop key 时间复杂度 O(1) 返回值 取出的元素或者 nil 实例理解 注意 在当前 redis 5 版本中LPOP 和 RPOP 命令是没有 count 参数的但 redis 6.2 版本之后新增了 count 参数描述了一次要删 count 个元素 小总结 list 是一个双端队列即两头插入、删除元素均十分高效时间复杂度为 O1搭配使用 rpush 和 lpop 就相当于 队列搭配使用 rpush 和 rpop 就相当于 栈 LINDEX 用于获取从左数第 index 位置的元素 语法 lindex key index 时间复杂度 O(N)此处 N 指的是 list 中的元素个数 返回值 如果下标非法返回 nil  实例理解 LINSERT 用于在特定位置插入元素 语法 linsert key before | after pivot element 时间复杂度 O(N)此处的N表示列表的长度 返回值 插入后 新 list 的长度 实例理解 注意 万一要插入的列表中 基准值存在多个怎么办 回答 linsert 在进行插入时会根据基准值先找到其对应的位置寻找顺序为从左往右找到第一个符合基准值的位置打止 LREM 用来删除指定元素 语法 lrem key count element count 代表要删除的个数element 代表要删除的值 时间复杂度 O(NM)N 为列表的长度M 为要删除元素的个数此处 M 一般不会很大可视为O(N) 返回值 被移除的元素数量 实例理解  如果 count 0 相当于在列表中从左往右找 删除 count 个 element 如果 count  0 相当于在列表中从右往左找 删除 count 个 element 如果 count 0 相当于 删除列表中 所有的 element LTRIM 用于保留列表中 指定范围的元素移除范围外的元素  语法 ltrim key start stop 保留 [start stop] 区间的元素即区间外面两边的元素就直接被删除了 时间复杂度 O(N)N 为要删除元素的个数 返回值 命令执行成功则返回 OK 实例理解 LSET 用于根据下标修改对应元素 语法 lset key index element 时间复杂度 ON 返回值 命令执行成功则返回 OK 实例理解 注意 相较于 lindex 命令其能很好的处理下标越界问题如果下标越界则直接返回 nil但 lset 命令对于下标越界其会直接报错而不会像 JavaScript 语言动态地扩展列表 并在给定下标位置插入元素 阻塞版本的命令 阻塞当前的线程 不走了代码不继续执行了会在满足一定的条件之后被唤醒 blpop、brpop 这俩个命令是 lpop、rpop 俩个命令的阻塞版本 阻塞版本 和 非阻塞版本的区别 1、如果 list 中存在 元素blpop、brpop 命令和 lpop、rpop 命令作用完全相同但如果 list 中为空 blpop 和 brpop 便会产生阻塞一直阻塞到队列不为空为止 brpop 和 blpop 会根据设置的超时时间 timeout 进行阻塞等待即 执行该命令的 redis 客户端将会阻塞但在这期间 redis 服务器可以执行其他redis 客户端发来的命令 注意 使用 brpop、blpop 命令时需显式地设置阻塞时间虽然此处的 brpop 和 blpop 看起来好像耗时很久但 redis 服务器不会产生因此而产生任何负面影响 2、blpop、brpop 命令可设置多个键将根据设置的键从左向右进行遍历一旦有一个键对应的列表中可以弹出元素命令立即返回 3、如果多个客户端同时对一个键执行 pop 命令则最先执行命令的客户端将得到弹出元素 注意 无论 pop 命令是否为阻塞命令均满足第三条特性 实例理解 此处理解 blpop、brpop 命令和 lpop、rpop 命令 的区别 a、当列表不为空时 lpop user:1:messages 得到 x 元素blpop user:1:messages 得到 x 元素二者行为一致 b、当列表不为空时且五秒内无新元素加入 lpop user:1:messages 立即得到 nilblpop user:1:messages 5 执行命令 5 秒后得到 nil二者行为不一致 c、当列表不为空时且五秒内有新元素加入 lpop user:1:messages 立即得到 nilblpop user:1:messages 5 执行命令直到新元素加入得到新元素二者行为不一致 BLPOP BRPOP LPOP RPOP 的阻塞版本前缀 b —— block 阻塞 注意 redis 中的 list 也相当于 阻塞队列一样线程安全是通过单线程模型支持的阻塞则只支持 队列为空 的情况不考虑 队列满  语法 blpop key [key ...] timeoutbrpop key [key ...] timeout 重点理解 此处我们可以指定 一个 key 或 多个 key每个 key 都需对应为 list 类型如果这些 key 对应的 list 有任何一个非空blpop rlpop 命令便会按照指定 key 的顺序进行遍历直到有一个 key 对应的 list 非空就将该 list 头或尾 的元素给获取到并立即返回该元素给客户端如果这些 key 对应的 list 均为空此时就会根据设置的 timeout 超时时间进行阻塞等待等待其他客户端往这些 key 对应的 list 中插入元素进而获取到对应 key 的 list返回该 list 的 头 或 尾 元素给客户端 注意 此处的 超时时间 timeout单位为 秒Redis 6 版本之后允许超时时间设置成 小数但 Redis 5 版本中超时时间得为整数 时间复杂度 O(1) 实例理解 1针对一个 非空的列表进行操作 返回的结果相当于一个 二元组该返回结果 告诉我们当前元素来自于哪个 key 的同时也告诉了我们弹出的元素值是什么 2针对一个空的列表进行操作 3针对多个 key 进行操作 小总结 Redis 可使用 blpop brpop 命令 作为消息队列虽然这俩命令可以在一定程度上满足 消息队列 的需求但整体来说对于一些复杂的消息处理场景中这俩命令还是有一定的局限性
http://www.dnsts.com.cn/news/104478.html

相关文章:

  • app与手机网站的区别怎样弄一个自己的网站
  • 永川做网站做鞋子的招聘网站有哪些
  • 做网站代理工作安全吗苏州建设工程公司
  • 太原的网站搭建公司如何做影视网站
  • 做网站原型图用什么软件表白网页设计代码大全
  • 做空比特币的网站深圳市建设局科技处网站
  • 网站seo收费360网站在系统那里
  • 网站有标题网页制作教程pdf
  • 海口cms建站系统enfold wordpress汉化
  • 自助建站平台免费商务型企业网站建设
  • 大型网站开发语言排名高校网站建设情况报告范文
  • 做网站需要准备什么东西软文有哪几种类型
  • 哪个网站做农产品网站建设行业解决方案
  • 深圳企业营销型网站网站建设高端网页设计
  • 李沧网站建设公司音乐 wordpress
  • 宁夏政务大厅城乡建设厅口网站网站自助授权系统
  • 大厂做网站邢台高端网站建设公司
  • 公司有网站有什么好处云南网络营销推广
  • 潍坊市做网站的公司广告设计与制作专业认识
  • 义乌婚介网站建设crm系统公司有哪些
  • 兰州建设局网站公告电商网站开发多少钱
  • dede网站模板怎么改泉州免费建站
  • 成都网站排名优化国内知名软件开发公司
  • 立码软件做网站生成静态页面网站源码
  • 上海专业微信网站开发公司高端网站设计品牌
  • 德州市住房和城乡建设部网站html5手机网站实例
  • wordpress手机图片站平面设计广告设计培训班
  • aspnet东莞网站建设多少钱网站设计一般是什么专业
  • wordpress 官方网站wordpress 火车发布
  • 建立网站线上营销深圳网站制作品牌祥奔科技