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

贵州省城乡与住房建设厅网站厦门网站建设seo

贵州省城乡与住房建设厅网站,厦门网站建设seo,企业产品网络推广,佛山建设List 类型一. 简单命令示例二. java 操作示例三. 使用场景四. 底层分析一. 简单命令示例 1.首先简单说明: List是一个双端链表的结构,内容是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈,队列,消息队列等场景 2.简单命令 //1.向列表左边添加元素 LPUSH ke… List 类型一. 简单命令示例二. java 操作示例三. 使用场景四. 底层分析一. 简单命令示例 1.首先简单说明: List是一个双端链表的结构,内容是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈,队列,消息队列等场景 2.简单命令 //1.向列表左边添加元素 LPUSH key value[value...] //2.向列表右边添加元素 RPUSH key value[value...] //3.查看列表 LRANGE key start stop //4.获取列表中的元素个数 LLEN key二. java 操作示例 操作 List 列表类型,按照插入顺序排序,可以添加一个元素到列表的头部左边或者尾部右边,通过list进行指定下标的查询,可以做到简单分页 Testpublic void test03(){//1.创建操作List类型数据的对象ListOperationsString ,String listOperations stringRedisTemplate.opsForList();//2.左上添加,第一个添加的会被后一个添加的挤压到下面listOperations.leftPush(student,liuliuliu);//3.右下追加,第一个添加的会被后一个添加的挤到上面listOperations.rightPush(students, Zhao Liu);//4.查询,根据key与下标获取指定位置的数据,左闭右闭,两边包含,返回一个ListListString students listOperations.range(student, 0,2);//5.根据key与指定下标获取单个数据String stu listOperations.index(student, 1);//6.获取当前List类型数据的长度Long total listOperations.size(student);//7.删除List类型数据,key为student的,value值为Li,在List中第二次出现的,listOperations.remove(student, 2, Li);// 删除多条,有左删除一条,右删除一条等stringRedisTemplate.delete(student);//8.从左边开始获取并删除String srt1 listOperations.leftPop(student);//9.右边开始获取并删除String str2 listOperations.rightPop(student);}三. 使用场景 公众号订阅: 假设用户a订阅了某个公众号sss,当sss公众号发布新文章,就会push到a用户的list中 //发布文章命令 LPUSH (like文章模块a用户id) sss公众号文章id, bbb公众号文章id //分页 LRANGE (like文章模块a用户id) 0 9商品评论列表: 一个商品会被不同用户评论,保存评论是按照先后顺序排序,查询商品时按照时间逆序排序,list存储时,key是商品id,value是评论信息:商品编号 LPUSH (品id)key 评论者id:评论信息四. 底层分析 list底层有linkedList、zipList和quickList三种存储方式当列表对象保存的所有字符串元素的长度都小于 list-max-ziplist-value 默认 64字节, 并且保存的元素数量小于list-max-ziplist-entries默认512个时采用zipList, 否则采用linkedlistlinkedlist: redis中自建了listNode对象, 通过内部的prev 和 next 指针组成的一个双端链表,在redis 在 3.2 版本时,考虑到redis的空间存储效率和时间效率,引入了quicklist快速列表作为 list 的底层实现可以看成ziplistlinkedList实现的一个双端链表,链表中的每一个节点都以压缩列表ziplist的结构保存着数据而ziplist有多个entry节点保存着数据。相当于一个quicklist节点保存的是一片数据而不再是一个数据redis中封装了quicklist 结构体变量, 内部通过quicklistNode 保存每一个节点数据, typedef struct quicklist {quicklistNode *head;quicklistNode *tail;unsigned long count; /* total count of all entries in all ziplists */unsigned long len; /* number of quicklistNodes */int fill : QL_FILL_BITS; /* fill factor for individual nodes */unsigned int compress : QL_COMP_BITS; /* depth of end nodes not to compress;0off */unsigned int bookmark_count: QL_BM_BITS;quicklistBookmark bookmarks[]; } quicklist;typedef struct quicklistNode {//上一个node节点struct quicklistNode *prev; //下一个nodestruct quicklistNode *next; //保存的数据 压缩前ziplist 压缩后压缩的数据unsigned char *zl; //表示zl执行的ziplist的总大小,注意如果ziplist被压缩了,这个sz的值仍然时压缩前的大小 unsigned int sz; //表示ziplist包含的数据个数,16bitunsigned int count : 16; //表示ziplist是否压缩,1表示没有,2表示压缩了unsigned int encoding : 2; //预留字段,当前是一个固定值2,表示使用zplist作为数据容器unsigned int container : 2; //解压标记1, 通过该标记可以再次压缩unsigned int recompress : 1;unsigned int attempted_compress : 1; unsigned int extra : 10; } quicklistNode;使用quicklist 插入数据时可以头部插入,或者尾部插入, 如果头节点(或尾节点) 上ziplist大小没有超过限制(即_quicklistModeAlLowEInsert 返回1)那么新数据被直接插入到ziplist中(调明ziplisteush ) 。如果头节点(或尾节点)上ziplist太大了那么新创建一个quicklistlode节点(对应地也会新创建一个ziplist)然后把这个新创建的节点插入到quicklist双向链表中 quicklist 在任意指定位置插入数据时 当插入位置所在的ziplist大小没有超过限制时直接插入到ziplist中当插入位置所在的ziplist大小超过了限制但插入的位置位于ziplist两端并且相邻的quicklist链表节点的ziplist大小没有超过限制那么就转而插入到相邻的那个quicklist链表节点的ziplist中;当插入位置所在的ziplist大小超过了限制但插入的位置位于ziplist两端并且相邻的Squicklist链表节点的ziplist大小也超过限制这时需要新创建一个quicklist链表节点插入。对于插入位置所在的ziplist大小超过了限制的其它情况(主要对应于在ziplist中间插入数据的情况)则需要把当前ziplist分裂为两个节点然后再其中一个节点上插入数据 quicklist 查找: quicklist的节点是由一个一个的ziplist构成的每个ziplist都有大小,所以先根据每个node个数,找到对应的ziplist,调用ziplist的index就能成功找到。quicklist 删除: 在区间删除时会先找到start 所在的 quicklistlode计算删除的元素是否小于要删除的count如果不满足删除的个数则会移动至下一个quicklistNode 继续删除依次循环直到删除完成为止
http://www.hkea.cn/news/14536540/

相关文章:

  • 深圳网站外包公司网页定制
  • 怎么做一个购物平台网站网站制作域名是免费的吗
  • 番禺区手机版网站建设甘肃路桥建设集团有限公司官方网站
  • 可信网站友链怎么做建站之星导出网站
  • WordPress 站点图标链接wordpress加关键词
  • 福田网站建设价格响应式网站需要的技术
  • 南京市建筑工程网站做渔家乐哪个网站最好
  • php+mysql网站开发教程集团公司网页设计内容
  • 如何给公司做网站推广宣传福州高端网站建设服务网络公司
  • o2o与网站建设论文pc网站增加手机站
  • 济南建设网站的公司哪家好免费下载ppt模板网站推荐
  • 网站建设 印花税网站与网络的区别
  • 国内新闻最近新闻今天做seo推广公司
  • 申请一个域名可以建设一个网站吗腾讯云网站备案
  • 乐清企业网站建设店铺推广渠道有哪些方式
  • 腾讯云怎样做网站中国住房和城乡建设部查询网站
  • pc 移动的网站开发网站滑动效果怎么做
  • 海南网站制作网站建设的技术准备
  • 阿里云网站开发服务器数字广东网络建设有限公司是国企吗
  • 有人用dw做网站吗网站开发是怎么样的
  • 问题不大工作室 网站网络建设费用
  • 优推宝可以做自己网站吗义乌 外贸网站 开发
  • 常见的搜索引擎有哪些博山专业网站优化哪家好
  • 怎样做公司的网站电子商务网站开发费用入账
  • 营销网站中最重要的部分是郑州同济医院妇科怎么样
  • 网站建设 ui设计网站系统参数设置
  • 邯郸网站建设公司排名环保局网站设计方案
  • 通州建设局网站网站兼容性代码
  • 建设网站装配式建筑楼房淮北官方网站
  • 建设项目环保备案登记网站网络营销成功案例