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

网页设计与网站建设实例教程答案珠海建设集团网站首页

网页设计与网站建设实例教程答案,珠海建设集团网站首页,打电话做网站的话术,博敏网站建设目录 前言 1.字符串数据类型 2.常见命令 3.典型应用场景 前言 字符串类型是Redis最基础的数据类型#xff0c;关于字符串需要特别注意: 1)首先Redis中所有的键的类型都是字符串类型#xff0c;而且其他几种数据结构也都是在字符串类似基础.上构建的#xff0c;例如列表…目录 前言 1.字符串数据类型 2.常见命令 3.典型应用场景 前言 字符串类型是Redis最基础的数据类型关于字符串需要特别注意: 1)首先Redis中所有的键的类型都是字符串类型而且其他几种数据结构也都是在字符串类似基础.上构建的例如列表和集合的 元素类型是字符串类型所以字符串类型能为其他4种数据结构的学习奠定基础。2) 其次如图2-7所示字符串类型的值实际可以是字符串包含-般格式的字符串或者类似JSON、XML 格式的字符串;数字可以是整型或者浮点型;甚至是二进制流数据例如图片、音频、视频等。不过一个字符串的最大值不能超过512 MB。由于Redis内部存储字符串完全是按照二进制流的形式保存的所以Redis是不处理字符集 编码问题的客户端传入的命令中使用的是什么字符集编码就存储什么字符集编码。 1.字符串数据类型 2.常见命令 SET 将string类型的value设置到key中。如果key之前存在则覆盖无论原来的数据类型是什么。之 前关于此key的TTL也全部失效。 语法: SET key value [expiration EX seconds|PX milliseconds] [NX|XX] 命令有效版本: 1.0.0之后 时间复杂度: 0(1) 选项: SET命令支持多种选项来影响它的行为: EX seconds一使用秒作为 单位设置key的过期时间。 PX milliseconds 一使用毫秒作为 单位设置key的过期时间。 NX —只在key不存在时才进行设置即如果key之前已经存在设置不执行。 XX一只在key存在时才进行设置即如果key之前不存在设置不执行。 注意:由于带选项的SET命令可以被SETNX、SETEX、 PSETEX 等命令代替所以之后的版本 中Redis 可能进行合并。 返回值: ●如果设置成功返回OK。. ●如果由于SET指定了NX或者XX但条件不满足SET不会执行并返回(nil)。 示例: redis EXISTS mykey (integer) 0 redis SET mykey Hello OK redis GET mykey Hello redis SET mykey World NX (nil) redis DEL mykey (integer) 1 redis EXISTS mykey (integer) 0 redis SET mykey World XX (nil) redis GET mykey (nil) redis SET mykey World NX OK redis GET mykey World redis SET mykey Will expire in 10s EX 10 OK redis GET mykey Will expire in 10s redis GET mykey # 10秒之后 (nil) GET 获取key对应的value。如果key不存在返回nilo如果value的数据类型不是string,会报错。 语法: GET KEY 命令有效版本: 1.0.0之后 时间复杂度: O(1) 返回值: key 对应的value,或者nil当key不存在。 示例: redis GET nonexisting (nil) redis SET mykey Hello OK redis GET mykey Hello redis DEL mykey (integer) 1 redis EXISTS mykey (integer) 0 redis HSET mykey name Bob (integer) 1 redis GET mykey (error) WRONGTYPE Operation against a key holding the wrong kind of value MGET 一次性获取多个 key的值。如果对应的key不存在或者对应的数据类型不是string,返回nilo 语法: MGET key [key ...] 命令有效版本: 1.0.0之后 时间复杂度: O(N) N是key数量 返回值:对应value的列表 示例: redis SET key1 Hello OK redis SET key2 World OK redis MGET key1 key2 nonexisting 1) Hello 2) World 3) (nil) MSET 一次性设置多个key的值。 语法: MSET key value [key value ...] 命令有效版本: 1.0.1 之后 时间复杂度: O(N) N是key数量 返回值:永远是OK 示例: redis MSET key1 Hello key2 World OK redis GET key1 Hello redis GET key2 World 图2-8多次get vs单次mget 如图2-8所示使用mget / mset由于可以有效地减少了网络时间所以性能相较更高。假设网络耗 时1毫秒命令执行时间耗时0.1毫秒则执行时间如表2-2所示。 表2-21000次get和1次mget对比 学会使用批量操作可以有效提高业务处理效率但是要注意,每次批量操作所发送的键的数量也不是无节制的否则可能造成单一命令执行时间过长导致Redis阻塞。 SETNX 设置key-value但只允许在key之前不存在的情况下。 语法: SETNX key value 命令有效版本: 1.0.0之后 时间复杂度: 0(1) 返回值: 1表示设置成功。0表示没有设置。 示例: redis SETNX mykey Hello (integer) 1 redis SETNX mykey World (integer) 0 redis GET mykey Hello SET、SET NX和SET XX的执行流程如图2-9所示。 图2-9SET、SET NX、SET XX执行流程 INCR 将key对应的string表示的数字加- -。如果key不存在则视为key对应的value是0。如果key对 应的string不是一个整型或者范围超过了64位有符号整型则报错。 语法: INCR key 命令有效版本: 1.0.0之后 时间复杂度: O(1) 返回值: integer 类型的加完后的数值。. 示例: redis EXISTS mykey (integer) 0 redis INCR mykey (integer) 1 redis SET mykey 10 OK redis INCR mykey (integer) 11 redis SET mykey 234293482390480948029348230948 OK redis INCR mykey (error) value is not an integer or out of range redis SET mykey not a number OK redis INCR mykey (error) value is not an integer or out of range INCRBY 将key对应的string表示的数字加上对应的值。如果key不存在则视为key对应的value是0。如 果key对应的string不是一个整型或者范围超过了64 位有符号整型则报错。 语法: INCRBY key decrement 命令有效版本: 1.0.0 之后 时间复杂度: O(1) 返回值: integer 类型的加完后的数值。 示例: redis EXISTS mykey (integer) 0 redis INCRBY mykey 3 (integer) 3 redis SET mykey 10 OK redis INCRBY mykey 3 (integer) 13 redis INCRBY mykey not a number (error) ERR value is not an integer or out of range redis SET mykey 234293482390480948029348230948 OK redis INCRBY mykey 3 (error) value is not an integer or out of range redis SET mykey not a number OK redis INCRBY mykey 3 (error) value is not an integer or out of range DECR 将key对应的string表示的数字减- -。如果key不存在则视为key对应的value是0。如果key对 应的string不是一个整型或者范围超过了64位有符号整型则报错。 语法: DECR key 命令有效版本: 1.0.0之后 时间复杂度: O(1) 返回值: integer 类型的减完后的数值。 示例: redis EXISTS mykey (integer) 0 redis DECR mykey (integer) -1 redis SET mykey 10 OK redis DECR mykey (integer) 9 redis SET mykey 234293482390480948029348230948 OK redis DECR mykey (error) value is not an integer or out of range redis SET mykey not a number OK redis DECR mykey (error) value is not an integer or out of range DECYBY 将key对应的string表示的数字减去对应的值。如果key不存在则视为key对应的value是0。如 果key对应的string不是一个整型或者范围超过了64位有符号整型则报错。 语法: DECRBY key decrement 命令有效版本: 1.0.0之后 时间复杂度: O(1) 返回值: integer 类型的减完后的数值。 示例: redis EXISTS mykey (integer) 0 redis DECRBY mykey 3 (integer) -3 redis SET mykey 10 OK redis DECRBY mykey 3 (integer) 7 redis DECRBY mykey not a number (error) ERR value is not an integer or out of range redis SET mykey 234293482390480948029348230948 OK redis DECRBY mykey 3 (error) value is not an integer or out of range redis SET mykey not a number OK redis DECRBY mykey 3 (error) value is not an integer or out of range INCRBYFLOAT 将key对应的string表示的浮点数加上对应的值。如果对应的值是负数则视为减去对应的值。如果 key不存在则视为key对应的value是0。如果key对应的不是string,或者不是一个浮点数则报 错。允许采用科学计数法表示浮点数。 语法: INCRBYFLOAT key increment 命令有效版本: 2.6.0之后 时间复杂度: O(1) 返回值:加/减完后的数值。 示例: redis SET mykey 10.50 OK redis INCRBYFLOAT mykey 0.1 10.6 redis INCRBYFLOAT mykey -5 5.6 redis SET mykey 5.0e3 OK redis INCRBYFLOAT mykey 2.0e2 5200 很多存储系统和编程语言内部使用CAS机制实现计数功能会有一定的CPU开销但在Redis中完全不存在这个问题因为Redis是单线程架构任何命令到了Redis服务端都要顺序执行。 APPEND 如果key已经存在并且是一个string,命令会将value追加到原有string的后边。如果key不存在, 则效果等同于SET命令。 语法: APPEND KEY VALUE 命令有效版本: 2.0.0 之后 时间复杂度: O(1).追加的字符串-般长度较短, 可以视为O(1).  返回值:追加完成之后string的长度。 示例: redis EXISTS mykey (integer) 0 redis APPEND mykey Hello (integer) 5 redis GET mykey Hello redis APPEND mykey World (integer) 11 redis GET mykey Hello World GETRANGE 返回key对应的string的子串由start和end确定(左闭右闭)。可以使用负数表示倒数。-1 代表倒数第一个字符 -2代表倒数第二个其他的与此类似。超过范围的偏移量会根据string的长度调整成正确的值。 语法: GETRANGE key start end 命令有效版本: 2.4.0之后 时间复杂度: O(N). N为[start, end]区间的长度.由于string通常比较短,可以视为是O(1) 返回值: string 类型的子串 示例: redis SET mykey This is a string OK redis GETRANGE mykey 0 3 This redis GETRANGE mykey -3 -1 ing redis GETRANGE mykey 0 -1 This is a string redis GETRANGE mykey 10 100 string SETRANGE 覆盖字符串的一部分,从指定的偏移开始。 语法: SETRANGE key offset value 命令有效版本: 2.2.0之后 时间复杂度: O(N), N为value的长度.由于一般给的value比较短通常视为0(1). 返回值:替换后的string的长度。 示例:  redis SET key1 Hello World OK redis SETRANGE key1 6 Redis (integer) 11 redis GET key1 Hello Redis STRLEN  获取key对应的string的长度。当key存放的类似不是string时报错。 语法: STRLEN key 命令有效版本: 2.2.0之后 时间复杂度: O(1) 返回值: string 的长度。或者当key不存在时返回0。 示例: redis SET mykey Hello world 1 OK redis STRLEN mykey (integer) 11 redis STRLEN nonexisting (integer) 0 命令小结 表2-3是字符串类型命令的效果、时间复杂度开发人员可以参考此表结合自身业务需求和数 据大小选择合适的命令。 字符串类型命令小结 内部编码 字符串类型的内部编码有3种: ●int: 8个字节的长整型。 ●embstr:小于等于39个字节的字符串。 ●raw:大于39个字节的字符串。 Redis会根据当前值的类型和长度动态决定使用哪种内部编码实现。 整型类型示例如下: 127.0.0.1:6379 set key 6379 OK 127.0.0.1:6379 object encoding key int 短字符串示例如下 # ⼩于等于 39 个字节的字符串 127.0.0.1:6379 set key hello OK 127.0.0.1:6379 object encoding key embstr 长字符串示例如下 # ⼤于 39 个字节的字符串 127.0.0.1:6379 set key one string greater than 39 bytes ........ OK 127.0.0.1:6379 object encoding key raw 3.典型应用场景 缓存功能 redis作为缓冲层MySQL作为存储层绝大部分的请求数据都是从redis中获取由于redis支持高并发的特性所以缓存能够起到加速读写降低后端压力的作用。 redis和MySQL组成的缓存存储结构 计数(Counter) 功能 许多应用都会使用Redis作为计数的基础工具它可以实现快速计数、查询缓存的功能同时数 据可以异步处理或者落地到其他数据源。如图2-11所示例如视频网站的视频播放次数可以使用 Redis来完成:用户每播放- -次视频相应的视频播放数就会自增1。 图2-11记录视频播放次数 共享会话(Session) 如图2-12所示一个分布式Web服务将用户的Session信息(例如用户登录信息)保存在各自的服务器中但这样会造成一个问题:出于负载均衡的考虑分布式服务会将用户的访问请求均衡到不同的服务器上并且通常无法保证用户每次请求都会被均衡到同一台服务器上这样当用户刷新一 次访问是可能会发现需要重新登录这个问题是用户无法容忍的。 图2-12 Session分散存储 为了解决这个问题可以使用Redis将用户的Session信息进行集中管理如图2-13所示在这种模 式下只要保证Redis是高可用和可扩展性的无论用户被均衡到哪台Web服务器上,都集中Redis中查询、更新Session信息。 图2-13 Redis集中管理Session 手机验证码 很多应用出于安全考虑会在每次进行登录时让用户输入手机号并且配合给手机发送验证码然后让用户再次输入收到的验证码并进行验证从而确定是否是用户本人。为了短信接口不会频繁访 问会限制用户每分钟获取验证码的频率例如一分钟不能超过5次如图2-14所示。 图2-14短信验证码 此功能可以使用以下伪代码说明基本实现思路 String 发送验证码(phoneNumber) {key shortMsg:limit: phoneNumber;// 设置过期时间为 1 分钟60 秒// 使⽤ NX只在不存在 key 时才能设置成功bool r Redis 执⾏命令set key 1 ex 60 nxif (r false) {// 说明之前设置过该⼿机的验证码了long c Redis 执⾏命令incr keyif (c 5) {// 说明超过了⼀分钟 5 次的限制了// 限制发送return null;}}// 说明要么之前没有设置过⼿机的验证码要么次数没有超过 5 次String validationCode ⽣成随机的 6 位数的验证码();validationKey validation: phoneNumber;// 验证码 5 分钟300 秒内有效Redis 执⾏命令set validationKey validationCode ex 300;// 返回验证码随后通过⼿机短信发送给⽤⼾return validationCode ; } // 验证用户输⼊的验证码是否正确 bool 验证验证码(phoneNumber, validationCode) {validationKey validation: phoneNumber;String value Redis 执⾏命令get validationKey;if (value null) {// 说明没有这个⼿机的验证码记录验证失败return false;}if (value validationCode) {return true;} else {return false;} }
http://www.dnsts.com.cn/news/50255.html

相关文章:

  • wordpress验证登录页面西安seo推广优化
  • 济南网站优化排名推广app对接网站
  • 右翼网站苏宁易购的网站建设
  • 唐山市城市建设规划局网站用网盘做网站
  • 电子商务网站建设的规划和实施未来软件网站建设
  • 网站运营方案书c 视频播放网站开发
  • 网站管理是做什么的秦皇岛网站制作服务
  • 针对网站开发软件 代替手动阿里网站seo
  • 济南网站建设公司排名小网站怎么建设
  • 信息化工作总结 网站建设建筑行业一般在哪个网站招聘
  • 网站底部 设计自考
  • 个体做敦煌网站怎么样最好的编程培训学校
  • 如何简单快速的制作网站有什么网站做交流会
  • seo关于网站搜索农产品电商网站建设的总体目标
  • 琴行网站建设方案wordpress缩略图圆角阴影
  • 泰安正规的网站建设外贸网站建设服务
  • 惠州seo整站优化网络推广培训班4800块钱贵吗
  • 网站建设维护视频教程河南郑州房价
  • 手机笑话网站模板类似凡科互动的网站
  • 泉州网站排名优化清镇市最新消息
  • 网站制作 客户刁难企信网官网登录入口全国
  • 网页.网站.主页.网址.域名有什么联系湛洪波.jsp网站开发详解
  • 怀柔高端网站建设php网站服务器架设
  • 云阿里云做网站要学好网站开发要会什么
  • 一级a做爰片51网站亚马逊雨林资料
  • 比较好的网站搭建论坛win2008 iis配置网站
  • 渭南网站建设公司wordpress文本编辑器插件
  • 网站建站咨询晚上必看的正能量网站
  • 网站建设手机端是什么意思广州设计公司前十名
  • 旅游网站排名相关推荐wordpress字体路径设置