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

中小企业建站实战织梦免费源码

中小企业建站实战,织梦免费源码,网站开发 脚本之家,天津手机模板建站目录 前言#xff1a; string 相关命令 内部编码 应用场景 hash 相关命令 内部编码 应用场景 list 相关命令 内部编码 应用场景 set 相关命令 内部编码 应用场景 Zset 相关命令 内部编码 应用场景 渐进式遍历 前言#xff1a; redis有多种数据类型 string 相关命令 内部编码 应用场景 hash 相关命令 内部编码 应用场景 list 相关命令 内部编码 应用场景 set 相关命令 内部编码 应用场景 Zset 相关命令 内部编码 应用场景 渐进式遍历 前言 redis有多种数据类型常用的有五种其他都是在特定场景下使用的数据类型。具体需要使用时可以去redis官网中查阅。这篇文章将详细介绍常用五种数据类型。 string redis中的字符串直接按照二进制的方式存储不会做任何编码转换怎么存就怎么取 限制大小最大是512M单线程操作都比较快 注意 当set key时如果是覆盖了之前的value那么之前的ttl生存时间也会失效类型可能也会改变具体的内部编码。 相关命令 ex设置过期时间单位秒 px设置过期时间单位毫秒 NX只有key不存在时才设置。如果key之前存在设置不执行 XX只有key存在时才设置如果key之前不存在设置不执行 SET key value [expiration EX seconds|PX milliseconds] [NX|XX] // 存储数据 mset key [key...] // 同时存储多个key mget key [key...] // 同时获取多个key setNX key // 不存在时才能设置存在则设置失败 setEX key seconds value // 存储key并且设置过期时间秒 psetEX key 毫秒 value // 存储key并且设置过期时间毫秒 incr key // key 1key不存在则把这个key的value当做0来使用操作value需要是整数 incrby key n // key n decr key // key - 1 decrby key n // key - n incrbyfloat value // key value操作小数 append key value // 字符串拼接返回值拼接后的长度。单位字节 getrange key start end // 截取子字符串左闭右闭单位字节-1倒数第一个元素汉字很可能切出来的不完整 setrange key offset value // 替换字符串返回值替换后字符串长度单位字节。针对不存在的key也可以操作会把offset之前字节填充为0X00 strlen key // 获得字符串长度单位字节 内部编码 1int 8字节/64位的整数。 2embstr 压缩字符串对数据重新进行编码占用更小的内存空间表示比较短的字符串。 3raw 普通字符串表示比较长的字符串单纯使用字节数组存储。 应用场景 1缓存 用户先访问缓存如果没有数据则查找数据库同时同步到redis中。 防止redis中数据量太大1redis中的key设置过期时间 。2redis内存不足时可以使用内存淘汰策略。 2统计数据 redis中的数据异步的写入数据库中进行数据分析统计。 3存储会话 分布式系统中服务器集群共享一份会话信息就可以判断用户的登录状态。就算负载均衡把请求打到不同的服务器也没事 4手机验证码 获取验证码间隔60秒可以使用redis存储验证码并且设置过期时间。 hash key-value的存储方式在redis中数据key被称为field。 相关命令 hset key field value [field value...] // 存储键值对 hget key field // 获取键值对 hexists key field 判断fileld是否存在返回值1存在 0不存在 hdel key field [field...] // 删除指定field返回值成功删除的个数 hkeys key // 获取哈希表中的所有field时间复杂度ONN哈希表中元素个数 hvals key // 获取哈希表中所有value时间复杂度ONN哈希表中元素个数 hgetall key // 获取hash表中所有fieldvalue。时间复杂度ONN哈希表中元素个数 hmget key field [field...] // 获取多个field的value值 hstrlen key field // 计算value字符串长度 hlen key // 获取哈希表中元素个数不需要遍历 hsetnx key field value // 不存在时才设置成功存在则设置失败 hincrby key field n // value n操作整数 hincrbyfloat key field n // value n操作小数 内部编码 ziplist hashtable 哈希表中的元素比较少使用ziplist。如果元素比较多使用hashtable表示。 哈希表中value长度比较短使用ziplist。如果value长度比较长使用hashtable。 注意 ziplist进行读写元素速度比较慢。 应用场景 作为缓存可以存储结构化数据对象。 list 列表内部数据结构可以认为是双端队列。同时redis提供了阻塞版本的操作命令。 相关命令 lpush key value [value...] // 头插法返回值list长度 lrange key start stop // 范围获取数据前闭后闭越界会尽量显示list中的数据下标支持负数 rpush key value [value...] // 尾插法返回值list长度 rpushx key value // key存在才会入数据xexists lpop key // 头删返回删除的元素 rpop key // 尾删返回删除的元素 lindex key index // 给定下标获取元素。O(N) linsert key before|after pivot value // 指定基准前或后插入数据。如果存在多个基准从左往右找找到第一个基准值进行插入。O(N) llen key // 获取list长度 lrem key count value // 删除指定元素count为数量。count 0从左往右删count个。count 0从右往左删count个。count 0删除list中所有value ltrim key start stop // 保留这个区间数据删除其他所有数据。闭区间 lset key index value // 根据下标修改元素。越界会报错 blpop key [key...] timeout // 如果队列为空出数据则阻塞(阻塞期间redis可以执行其他命令)只要某一个key不为空则立刻出数据 brpop key [key...] timeout 内部编码 使用quicklist结合了ziplist和linkedlist。每个链表节点中都是ziplist 应用场景 1作为数组存储多个元素 存储mysql中表中的关联字段。结构化数据可使用hash存储。可以将关系型数据库中的数据进行映射。 2作为消息队列生产者消费者模型 可以使用阻塞版本的操作实现生产者消费者模型。客户端和服务器之间的中间列表就可以做到一个缓冲功能。 注意 如果使用for循环list使用hgetall获取每个hash中数据会存在多次网络请求可能会阻塞redis服务器。 解决方案使用pipeline流水线|管道将多个redis命令合并为一条命令。进行网络通信。 如果list中数据量太大范围查找中间数据效率会比较低。 解决方案将一个list分为多个list类似分库分表 set 1集合中的元素是无序的变换顺序还是原来那个set 2集合中的元素不能重复。 3和list类似集合中的每个元素也是string类型。 相关命令 sadd key member [member...] // 存储元素返回值添加成功了几个元素 smembers key // 查询集合中所有member sismember key member // 判断集合中member是否存在。1表示存在0表示不存在 scard key // 返回集合中元素个数 spop key [count] // 随机删除set中的数据count可以指定一次删除多个 smove source destination member // 从source中删除再插入到distination中 srem key member [member...] // 从set中删除member sinter key [key...] // 返回多个key的交集。O(N * M) N最小集合元素个数M最大集合元素个数 sinterstore destination key [key...] / 返回多个key集合数据存储在destination集合中。返回交集元素个数。O(N) sunion key [key...] // 返回多个key的并集。O(N) sunionstore destination key [key...] // 将多个key的并集存储在destination集合中。返回并集元素个数。O(N) sdiff key [key...] // 返回多个Key的差集前面key - 后面key和key的顺序有关联。O(N) sdiffstore destination key [key...] // 将差集存储在destination集合中返回差集元素个数。O(N) 内部编码 1intset 当元素均为整数并且元素个数不是很多。 2hashtable 其他都是用哈希表存储了。 应用场景 1保存用户标签用户画像。大数据时代下为每个用户建立表标签特点方便服务器进行用户分析进行数据推送。每个用户都是相互独立的存在 2计算用户之间共同好友可以做一些好友推荐。可以使用集合间运算 3争对业务场景进行去重。 Zset 1value采用member和score的方式存储内部会根据每个member的score进行排序。 2有序集合。member必须唯一score可以重复。底层默认按照score升序排列。 相关命令 时间复杂度OlogN 底层是跳表需要遍历跳表找到指定位置进行插入保证集合有序 分数相同按照member字典序排列 zadd key [NX | XX] [CH] [INCR] score member [score member...] // 返回值有序集合添加元素的个数 时间复杂度OlogN NXmember不存在就添加 XXmember存在就修改 CH修改返回值为修改集合member的个数 INCR指定member增加score zrange key start stop [withscores] // 查找有序集合范围中的memberwithscores同时可以查找score zcard key // 返回集合中元素个数 zcount key min max // 返回指定分数区间中元素个数使用来设置开区间。时间复杂度O(logN)) 需要查找第一个start元素。inf正无穷大 -inf负无穷大 zrevrange key start stop [withscores] // 逆序查找出来的集合按照分数降序 zrangebyscore key min max [withscores] // 查找指定score区间中的member。时间复杂度OlogN MMmax - min zpopmax key [count] // 删除并返回最高的count个元素。返回值被删除的member和score。如果存在多个分数最大的元素只删除member字典序大的数据。时间复杂度OlogN * M需要找到每个元素进行删除底层使用通用的删除函数 bzpopmax key [key...] timeout // 带有阻塞的弹出如果为空就会阻塞。和blpop机制一样。时间复杂度O(logN)需要找到数据 zpopmin key [count] // 删除score最小的count个元素。时间复杂度OlogN M bzpopmin key [key...] timeout // 带有阻塞的弹出 zrank key member // 返回member的下标从左往右由0开始。时间复杂度OlogN zrevrank key member // 返回member下标从右往左由0开始 zscore key member // 根据member找到score。时间复杂度O(1) redis在这里做了特殊优化 zrem key member [member...] // 删除指定的member。时间复杂度O(logN * M) 需要一个一个删除。M命令中member的个数 zremrangebyrank key start stop // 根据下标进行范围删除。时间复杂度O(logN M) Mstop - start zremrangebyscore key min max // 根据score进行范围删除。可设置开区间。时间复杂度O(logN M) Mmax - min zincrby key increment member // 指定member对score increment。时间复杂度O(logN) zinterstore destination numkeys key [key...] [weights weight [weight...]] [aggregate sum | min | max] // 求多个key的交集存在destination中。weights指定key的权重最终结果会将key中所有score * weight作为结果。aggregate交集中score相同的处理选择。时间复杂度O(logM * M)近似值M最终结果有序集合元素个数 zunionstore destination numkeys key [key...] [weights weight [weight...]] [aggregate sum | min | max] // 用法和上述一致 内部编码 1ziplist 如果有序集合中元素较少或者单个元素体积较小。 2skiplist 如果有序集合中元素较多或者单个元素体积很大。跳表查询元素时间复杂度log(N) 应用场景 排行榜系统。微博热搜游戏天梯排行成绩排行。 微博热搜可以根据多维度数据进行加权计算得到最终的综合得分热度。每个维度使用有序集合存储id, score然后进行集合间运算就可以使用加权计算出最终的热度排行。 渐进式遍历 patternkey的匹配模式 count建议命令一次遍历几个元素具体是几个是在count上下浮动 type指定遍历key的value类型 cursor光标字符串。下次开始遍历的位置 scan cursor [MATCH pattern] [COUNT count] [TYPE type] 注意 渐进式遍历在遍历过程中不会在服务器这边存储任何状态信息。此处遍历是可以随时终止的不会对服务器产生任何副作用。 渐进式遍历虽然解决了阻塞问题但如果遍历过程中键有所变化增加修改删除可能导致遍历时键的重复遍历或者遗漏。开发中务必需要考虑。
http://www.hkea.cn/news/14508625/

相关文章:

  • 网站建设的利益分析100个免费设计网站
  • 石家庄站全景图那个网站做宝贝主图好
  • 论文收录网站排名西安网络推广哪家好
  • 企业为何选择网站推广外包?网站建设怎么外包好
  • 效果图网站大全nodejs做的网站
  • 网站广告推广哪家好做团购网站视频
  • 购物网站开发教程+视频爱企查 免费
  • 网站建设的市场调研互联网公司排名百强
  • 工程业绩在建设厅网站都能查到wordpress 完整备份
  • 怎么做解析视频网站深圳福田站
  • 高端网站建设公司兴田德润可以不sae网站备案
  • 网站备案归哪里管如何把资料上传到网站
  • 一个网络空间做两个网站一个帮你赚钱的网站是谁做的广告
  • 做网站找投资人购物网站开发软件
  • 中国机械加工网官方网站中学校园网网站建设规划书
  • 布吉网站建设哪家技术好织梦转wordpress插件下载
  • 黄金网站软件app下载安装网站建设都需要哪些东西
  • 重庆本地建站网站快速排名
  • 个人摄影网站源码深圳网站建设 公司元
  • 有域名了如何建网站网站建设怎样
  • php 读取网站文件wordpress 对联广告
  • 南京公司网站建设费用北京商场核酸
  • php网站环境配置电商网站管理
  • 做网站源代码需要买吗个人网页设计欣赏作品
  • 网站营销方案模板一般通过路人
  • 辽阳网站建设多少钱wordpress腾讯视频播放器
  • 网站空间管理地址网站建哪家好
  • 13个优质平面设计网站推荐股票海选公司用什么网站
  • 汉鼎中国 网站建设闵行手机网站建设
  • 湖南网站设计亮点asp.net开发微网站开发