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

网站 手机版 电脑版 怎么做线上营销渠道主要有哪些

网站 手机版 电脑版 怎么做,线上营销渠道主要有哪些,wordpress 后台菜单修改,高中资料网站免费目录 前言 1.常见命令 2.使用场景 前言 列表类型是用来存储多个有序的字符串#xff0c;如图2-19所示#xff0c;a、b、C、d、e五个元素从左到右组成 了一个有序的列表#xff0c;列表中的每个字符串称为元素(element) #xff0c;一个列表最多可以存储2^32 - 1 个元素…目录 前言 1.常见命令 2.使用场景 前言 列表类型是用来存储多个有序的字符串如图2-19所示a、b、C、d、e五个元素从左到右组成 了一个有序的列表列表中的每个字符串称为元素(element) 一个列表最多可以存储2^32 - 1 个元素。在Redis中可以对列表两端插入(push) 和弹出(pop) 还可以获取指定范围的元素列表、 获取指定索引下标的元素等(如图2-19和图2-20所示)。列表是一种比较灵活的数据结构它可以 充当栈和队列的角色在实际开发上有很多应用场景。 图2-19列表两端插入和弹出操作 图2-20列表的获取、删除等操作 列表类型的特点: 第一、列表中的元素是有序的,这意味着可以通过索引下标获取某个元素或者某个范围的元素列表, 例如要获取图2-20的第5个元素可以执行lindex user:1:messages 4或者倒数第1个元素lindex user:1:messages -1就可以得到元素e。 第二、区分获取和删除的区别例如图2-20中的lrem 1 b是从列表中把从左数遇到的前1个b元素删 除这个操作会导致列表的长度从5变成4;但是执行lindex 4只会获取元素但列表长度是不会变化 的。 第三、列表中的元素是允许重复的例如图2-21中的列表中是包含了两个a元素的。 图2-21列表中允许有重复元素 1.常见命令 LPUSH 将一个或者多个元素从左侧放入(头插)到list中。 语法: LPUSH key element [element ...] 命令有效版本: 1.0.0之后 时间复杂度:只插入一个元素为0(1), 插入多个元素为O(N), N为插入元素个数. 返回值:插入后list的长度。 示例: redis LPUSH mylist world (integer) 1 redis LPUSH mylist hello (integer) 2 redis LRANGE mylist 0 -1 1) hello 2) world LPUSHX 在key存在时将-个或者多个元素从左侧放入(头插)到list中。不存在直接返回 语法: LPUSHX key element [element ...] 命令有效版本: 2.0.0之后 时间复杂度:只插入一个元素为0(1), 插入多个元素为0(N), N为插入元素个数. 返回值:插入后list的长度。 示例: redis LPUSH mylist World (integer) 1 redis LPUSHX mylist Hello (integer) 2 redis LPUSHX myotherlist Hello (integer) 0 redis LRANGE mylist 0 -1 1) Hello 2) World redis LRANGE myotherlist 0 -1 (empty array) RPUSH 将一个或者多个元素从右侧放入(尾插)到list 中。 语法: RPUSH key element [element ...] 命令有效版本: 1.0.0之后 时间复杂度:只插入一个元素为0(1), 插入多个元素为O(N), N为插入元素个数. 返回值:插入后list的长度。 示例: redis RPUSH mylist world (integer) 1 redis RPUSH mylist hello (integer) 2 redis LRANGE mylist 0 -1 1) world 2) hello RPUSHX 在key存在时,将一个或者多个元素从右侧放入(尾插)到list中。 语法: RPUSHX key element [element ...] 命令有效版本: 2.0.0之后 时间复杂度:只插入一个元素为0(1),插入多个元素为O(N), N为插入元素个数. 返回值:插入后list的长度。 示例: redis RPUSH mylist World (integer) 1 redis RPUSHX mylist Hello (integer) 2 redis RPUSHX myotherlist Hello (integer) 0 redis LRANGE mylist 0 -1 1) World 2) Hello redis LRANGE myotherlist 0 -1 (empty array) LRANGE 获取从start到end区间的所有元素左闭右闭。 语法: LRANGE key start stop 命令有效版本: 1.0.0之后 时间复杂度: O(N) 返回值:指定区间的元素。 示例: redis RPUSH mylist one (integer) 1 redis RPUSH mylist two (integer) 2 redis RPUSH mylist three (integer) 3 redis LRANGE mylist 0 0 1) one redis LRANGE mylist -3 2 1) one 2) two 3) three redis LRANGE mylist -100 100 1) one 2) two 3) three redis LRANGE mylist 5 10 (empty array) LPOP 从list左侧取出元素(即头删)。 语法: LPOP key 命令有效版本: 1.0.0之后 时间复杂度: O(1) 返回值:取出的元素或者nilo  示例: redis RPUSH mylist one two three four five (integer) 5 redis LPOP mylist one redis LPOP mylist two redis LPOP mylist three redis LRANGE mylist 0 -1 1) four 2) five RPOP 从list右侧取出元素(即尾删)。 语法: RPOP key 命令有效版本: 1.0.0之后 时间复杂度: 0(1) 返回值:取出的元素或者nil。 示例: redis RPUSH mylist one two three four five (integer) 5 redis RPOP mylist five redis LRANGE mylist 0 -1 1) one 2) two 3) three 4) four LINDEX 获取从左数第index位置的元素。 语法: LINDEX key index 命令有效版本: 1.0.0之后 时间复杂度: O(N) 返回值:取出的元素或者nil。 示例: redis LPUSH mylist World (integer) 1 redis LPUSH mylist Hello (integer) 2 redis LINDEX mylist 0 Hello redis LINDEX mylist -1 World redis LINDEX mylist 3 (nil) LINSERT 在特定位置插入元素。 语法: LINSERT key BEFORE | AFTER pivot element 命令有效版本: 2.2.0之后 时间复杂度: O(N) 返回值:插入后的list长度。 示例: redis RPUSH mylist Hello (integer) 1 redis RPUSH mylist World (integer) 2 redis LINSERT mylist BEFORE World There (integer) 3 redis LRANGE mylist 0 -1 1) Hello 2) There 3) World LLEN 获取list长度。 语法: LLEN key 命令有效版本: 1.0.0之后 时间复杂度: 0(1) 返回值: list 的长度。 示例: redis LPUSH mylist World (integer) 1 redis LPUSH mylist Hello (integer) 2 redis LLEN mylist (integer) 2 阻塞版本命令 blpop和brpop是lpop和rpop的阻塞版本和对应非阻塞版本的作用基本一致除了: ●在列表中有元素的情况下阻塞和非阻塞表现是一致的。但如果列表中没有元素,非阻塞版本会理 解返回nil,但阻塞版本会根据timeout,阻塞一段时间 期间Redis可以执行其他命令但要求执行该命令的客户端会表现为阻塞状态(如图2-22所示)。  ●命令中如果设置了多个键那么会从左向右进行遍历键一旦有一个键对应的列表中可以弹出元 素命令立即返回。 ●如果多个客户端同时多一个键执行pop,则最先执行命令的客户端会得到弹出的元素。 图2-22阻塞版本的blpop和非阻塞版本lpop的区别 BLPOP LPOP的阻塞版本。 语法: BLPOP key [key ...] timeout 命令有效版本: 1.0.0 之后 时间复杂度: 0(1) 返回值:取出的元素或者nil。 示例: redis EXISTS list1 list2 (integer) 0 redis RPUSH list1 a b c (integer) 3 redis BLPOP list1 list2 0 1) list1 2) a BRPOP RPOP的阻塞版本。. 语法: BRPOP key [key ...] timeout 命令有效版本: 1.0.0 之后 时间复杂度: 0(1) 返回值:取出的元素或者nil。 示例: redis DEL list1 list2 (integer) 0 redis RPUSH list1 a b c (integer) 3 redis BRPOP list1 list2 0 1) list1 2) c 命令小结 有关列表的命令已经介绍完毕表2-5是这些命令的作用和时间复杂度,开发人员可以参考。 内部编码 列表类型的内部编码有两种: ●ziplist (压缩列表) : 当列表的元素个数小于list-max-ziplist-entries配置(默认512个)同时 列表中每个元素的长度都小于list-max-ziplist-value配置(默认64字节)时Redis 会选用 ziplist来作为列表的内部编码实现来减少内存消耗。 ●linkedlist (链表) :当列表类型无法满足ziplist的条件时Redis会使用linkedlist 作为列表的内 部实现。 1)当元素个数较少且没有大元素时内部编码为ziplist: 127.0.0.1:6379 rpush listkey e1 e2 e3 OK 127.0.0.1:6379 object encoding listkey ziplist 2)当元素个数超过512时内部编码为linkedlist:  127.0.0.1:6379 rpush listkey e1 e2 e3 ... 省略 e512 e513 OK 127.0.0.1:6379 object encoding listkey linkedlist 3)当某个元素的长度超过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 2.使用场景 消息队列 如图2-22所示Redis 可以使用lpush brpop命令组合实现经典的阻塞式生产者消费者模型队列 生产者客户端使用lpush从列表左侧插入元素多个消费者客户端使用brpop命令阻塞式地从队列中 争抢队首元素。通过多个客户端来保证消费的负载均衡和高可用性。 分频道的消息队列 如图2-23所示Redis 同样使用lpush brpop命令但通过不同的键模拟频道的概念不同的消费 者可以通过brpop不同的键值实现订阅不同频道的理念。 图2-23 Redis分频道阻塞消息队列模型 微博Timeline 每个用户都有属于自己的Timeline (微博列表)现需要分页展示文章列表。此时可以考虑使用 列表因为列表不但是有序的同时支持按照索引|范围获取元素。 1)每篇微博使用哈希结构存储例如微博中3个属性: title、 timestamp、 content: hmset mblog:1 title xx timestamp 1476536196 content xxxxx ... hmset mblog:n title xx timestamp 1476536196 content xxxxx 2)向用户Timeline添加微博user:uid:mblogs 作为微博的键: lpush user:1:mblogs mblog:1 mblog:3 ... lpush user:k:mblogs mblog:9 3)分页获取用户的Timeline,例如获取用户1的前10篇微博: keylist lrange user:1:mblogs 0 9 for key in keylist {hgetall key } 此方案在实际中可能存在两个问题:  1. 1 n问题。即如果每次分页获取的微博个数较多需要执行多次hgetall操作,此时可以考虑使用 pipeline (流水线)模式批量提交命令或者微博不采用哈希类型而是使用序列化的字符串类型使用mget获取。 2.分裂获取文章时lrange 在列表两端表现较好获取列表中间的元素表现较差此时可以考虑将列表做拆分。 选择列表类型时请参考: 同侧存取(lpush lpop或者rpush rpop)为栈 异侧存取(Ipush rpop或者rpush lpop)为队列
http://www.zqtcl.cn/news/707720/

相关文章:

  • 商城网站项目案例简单的明星个人网站建设论文
  • 腾讯云建网站如何利用谷歌云做自己的网站
  • 合肥网站搭建著名的网站建设公司
  • win7的iis怎么制作网站网页制作基础代码
  • 黄页网站大全免费网在线进一步优化供给推动消费平稳增长
  • dw中怎样做网站链接网页版qq登录入口账号密码
  • 外贸网站建设soho中国建设银行网站易方达消费
  • 淘宝客网站推广怎么做图文识别微信小程序是什么
  • 郑州网站建设、北京做网页公司
  • 代码错误网站wordpress主题屏蔽更新
  • 建五金方面的网站广告联盟app手机版
  • 宜宾建设网站公众号怎么制作流程
  • 上海崇明网站建设崇信县门户网站首页
  • 北京手机版建站系统开发学网页设计需要什么学历
  • 英文网站备案互联网排名前十的公司2021
  • 网站外部外链建设如何开发wordpress主题
  • 个人网站首页内容辽宁省建设网站
  • 二建证从住房建设厅网站调出流程需求分析 网站
  • 鞋子网站模板做网站开发学什么软件
  • 网站建设的需求客户中企动力科技股份有限公司招聘
  • 小程序定制 seo营销seo托管公司
  • 杭州网站设计公司联系亿企邦网站建设在电访销售话术
  • 安康网站开发公司报价网站开发人员考核
  • 谷歌网站 百度清苑住房和城乡建设局网站
  • 南宁世尊商贸网站建设如何查看一个网站是否备案
  • h5手机网站怎么做搜索引擎关键词怎么选
  • 弱电网站源码工程造价建设信息网站
  • 村级网站模板做公司永久免费网站什么好
  • 厦门做网站培训安康市电梯公司
  • 江苏水利建设网站排行榜百度