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

熟人做网站怎么收钱个人简历自我介绍200字

熟人做网站怎么收钱,个人简历自我介绍200字,在线音乐网站怎么做,网站建设销售员日升时奋斗#xff0c;日落时自省 注#xff1a;命令区分有点细#xff0c;择取自己需要的即可 目录 1、单机架构 2、数据库和应用分离 3、分布式基本概念 3.1、应用#xff08;Application#xff09;/系统(System) 3.2、模块#xff08;Module#xff09;/组件日落时自省 注命令区分有点细择取自己需要的即可 目录 1、单机架构 2、数据库和应用分离 3、分布式基本概念 3.1、应用Application/系统(System) 3.2、模块Module/组件Component 3.3、分布式Distributed 3.4、集群Cluster 3.5、主Master /从Slave 3.6、中间件Middleware 3.7、可用性Availability 3.8、响应时长Response Time RT 3.9、吞吐Throughputvs并发Concurrent 4、命令行客户端 4.1、连接redis 4.1.1、全局命令 4.2、String字符串 4.2.1、创建键值对 4.2.2、一次获取多个值 4.2.3、一次创建多个键值对 4.2.4、覆盖创建键值对 4.3、计数命令 4.3.1、单增命令 4.3.2、n增命令 4.3.3、单减命令 4.3.4、n减命令 4.3.5、浮点数加减 4.4、string获取相关命令 4.4.1、末尾追加命令 4.4.2、获取string指定区间 4.4.3、子串的覆盖 4.4.4、获取string长度 4.4.5、内部编码 4.5、Hash哈希 4.5.1、创建哈希键值对 4.5.2、删除键值对 4.5.3、获取hash中所有值 4.5.4、获取所有字段和对应值 4.5.5、一次获取hash多个字段值 4.5.6、hash所有字段的个数 4.5.7、内部编码 4.6、List列表 4.6.1、左侧插入 4.6.2、右侧插入 4.6.3、显示所有的list列表 4.6.4、左侧抛出元素 4.6.5、右侧抛出元素 4.6.6、获取index位置元素 4.6.7、特定位置插入元素 4.6.8、扩展命令 4.6.9、内部编码 4.7、Set集合 4.7.1、添加元素 4.7.2、判断key是否存在 4.7.3、获取集合内的个数 4.7.4、随机元素 4.7.5、指定元素删除 4.7.6、移动元素 4.7.7、内部编码 4.8、Zset有序集合 4.8.1、添加元素 4.8.2、获取一个zset的个数 4.8.3、取指定分数区间 4.8.4、按照降序进行排列 4.8.5、只返回元素列表 4.8.6、内部编码 在官方文档开头redis作用就存储数据但是不同于数据库的是“内存中存储”  redis可以做的角色有很多可以做数据库、缓存、消息队列、消息代理针对这不同角色解释 数据库MySQL我们常见的数据库最大的问题在于访问速度比较慢很多互联网产品中对于性能要求是很高Redis作为数据库的话相较于MySQL的访问速度快 注经由对比才能说Redis很快但是既然是内存中操作拿数据量就小承受能力有限光快但是能存储的数据量不大 如何能做到快速且容量大 解决方案Redis和MySQL结合起来使用 不是所有数据都直接经过MySQL存储肯定都是存储在MySQL中的有足够大的容量来接收数据redis操作数据更快 针对所谓数据都有常用数据不常用数据也就衍生出了“二八原则”20%的热点数据能满足80%的访问需求不是说一定就是20%按照业务需求来定夺分配“一九”也不是没有 注系统的复杂程度大大提升分布式如果数据发生修改还涉及到Redis和MySQL之间的数据同步问题 消息队列Redis的初心最初就是用来作为一个“消息中间件”的消息队列分布式系统下的生产者消费者模型因为redis功能不是完全做消息队列的中间件的 Redis是在分布式系统中才会起的作用如果只是单击程序直接通过变量存储数据的方式就不用使用了Redis 1、单机架构 单机架构只有一台服务器这个服务器负责所有的工作也就是常规请求 单机程序中其实靠的不就是数据库信息的拉取嘛但是数据库也不是不能去掉光服务器负责所有操作单机架构是比较常见架构使用因为只有数据量够大的情况才会使用redis 一台主机的硬件资源是有上限的CPU、内存、硬盘、网络每次请求都会收到一个请求都是需要消耗上述的一些资源现在一台主机都够用不行了其实也可以增加硬件资源但是肯定硬件资源不能在加了就开始使用分布式 2、数据库和应用分离 一个应用服务器节点就要承受大量的请求一时是处理不了的影响到用户的体验感所以这里就针对大量数据做出优化措施 引入更多的应用服务器节点分匹配请求量就分开处理提高处理效率这里就提及到负载均衡器 负载均衡器主要作用就是任务分配请求分配具体的算法 应用服务器是要吃资源的CPU和内存要承受的了负载均衡器就分配给多个应用服务器解决资源问题这里有两个应用服务器如果是1w的请求量那可以每个服务器处理5k如同多线程 注这里只有展示了两个应用服务器但实际上不一定就是两个可以是多个 执行过程用户--(大量请求)--负载均衡器--(请求量分配)--应用服务器--存储服务器 3、分布式基本概念 3.1、应用Application/系统(System) 一个应用就是一个/组服务器程序 3.2、模块Module/组件Component 一个应用里面有很多个功能每个独立的功能就可以称为是一个模块/组件 3.3、分布式Distributed 引入多个主机/服务器协同配合完成一系列的工作物理上的多个主机 3.4、集群Cluster 引入多个主机/服务器,协同配合完成一系列的工作逻辑上的多个主机 3.5、主Master /从Slave 分布式系统中一种比较典型的结构 多个服务器节点其中一个是主剩下的都是从节点从节点的数据要从主节点这里同步过来这里的从节点也可能是其他从节点的主节点 3.6、中间件Middleware 相通业务的服务功能更通用的服务数据库、缓存、消息队列、负载均衡、安全认证、同步数据 3.7、可用性Availability 系统整体可用的时间/总的时间 一年能可用多长时间360/36598.63% 3.8、响应时长Response Time RT 衡量服务器的性能  和具体服务器要做的业务密切相关的 越小越好 3.9、吞吐Throughputvs并发Concurrent 吞吐指系统在单位时间内处理的请求数或者说单位时间内处理的字节数 并发则是指同时访问系统的用户数量 衡量系统的处理请求的能力衡量性能的一种方式 4、命令行客户端 4.1、连接redis 1交互式方式redis-cli -h 127.0.0.1 -p 6379  是否连接上ping一下响应PONG 2命令方式交互redis-cli -h 127.0.0.1 -p 6379 ping 当然后面命令不是就这一种只要是redis的命令就可以 注-h {host} -p {port} 4.1.1、全局命令 redis中5种常见数据结构他们都是键值对的形式对于键来说有些通用的命令 1KEYS满足样式pattern的key   命令操作 keys pattern  注这里keys *是全部都去查询的所以尽量不要使用大量的查询也会吃掉很多的网络带宽这时如果客户端来了信息就不一定能接收得到了 2EXISTS 判断某个key是否存在  操作命令EXISTS key (这里可以是多个redis1.0版本之后都是可以的) 返回的是查询的个数查到的有几个 3DEL 删除命令 删除命令del key  可以指定多个key 4EXPIRE 设定过期时间 指定这个key的过期时间秒级的过期时间 操作命令EXPIEX  key  秒数 设置之前 这个key是需要存在的才能设置时间 TTL 是显示key当前还剩下多少时间如果是-1表示没有设置过期时间-2表示没有这个key 5TYPE 数据类型 操作命令TYPE key 4.2、String字符串 字符串类型是Redis最基础的数据类型关于字符串需要特别注意首先redis所有的键类型都是字符串类型而且其他几种数据结构也都是在字符串类似基础上构建的 4.2.1、创建键值对 操作命令set key value [expiration EX seconds | PX milliseconds] [NX|XX] expiration这个关键词已经介绍过了就是过期时间如果不设置时间的话就是以秒为单位的如果以PX 开头的话为就是毫秒级别的 EX seconds 使用秒为单位进行设置过期时间 PX milliseconds 使用毫秒为单位设置过期时间 NX 只在key不存在时才能设置如果存在key之前已经存在 设置不执行 XX 只在key存在时才进行设置既如果key之前不存在设置不执行 命令就直接拿来练set 是设置命令 get是获取key对应的value 127.0.0.1:6379 keys * (empty array) 127.0.0.1:6379 EXISTS mykey (integer) 0 127.0.0.1:6379 set mykey hello OK 127.0.0.1:6379 get mykey hello 127.0.0.1:6379 set mykey world NX (nil) 127.0.0.1:6379 del mykey (integer) 1 127.0.0.1:6379 set mykey world NX OK 127.0.0.1:6379 get mykey world 127.0.0.1:6379 get mykey world 127.0.0.1:6379 set mykey will expire in 10s EX 10 OK 127.0.0.1:6379 ttl mykey (integer) 6 127.0.0.1:6379 ttl mykey (integer) 5 127.0.0.1:6379 get mykey (nil)以上是一些演示环节友友们直接自行操作即可 最后的四行命令主要展示的是在设置键值对的时候就开始了设置过期时间 EX 这里演示意思是如果mykey值是有的但是我能给你覆盖掉并且设定一个过期时间 注redis进行命令操作的时候一般都是有提示的所以不用硬记命令 4.2.2、一次获取多个值 MGET命令操作mget key 这里可以写多个key 一次获取多个key的value 下面开始命令演示 127.0.0.1:6379 keys * (empty array) 127.0.0.1:6379 set key1 hello OK 127.0.0.1:6379 set key2 world OK 127.0.0.1:6379 mget key1 key2 key3 1) hello 2) world 3) (nil)mget 获取不同个key的value值 会对应进行显示如果这个key值不存在的话就会直接打印一个nil 注nil就相当于C语言中的NULL 也就相当于 Java中的null 就是没有的意思 4.2.3、一次创建多个键值对 一次设置多个key 的值 MSET 操作命令MSET key value 设置多组key-value 127.0.0.1:6379 MSET key3 hello key4 world OK 127.0.0.1:6379 MGET key3 key4 1) hello 2) worldmget/mset有效减少网络时间所以性能相较更高假设网络消耗1毫秒执行时间消耗0.1毫秒 例如1000次get  耗时1000*1 1000*0.11100毫秒  1次mget1000个 耗时 1*11000*0.1101毫秒 命令是向服务器发送请求的而不是当前直接执行命令命令交给服务器进行执行所以这里mset发送命令的时候发送1次消耗的时间减少了网络传输的时间网络传输的时间是比较慢的同时也是比较珍贵的资源 4.2.4、覆盖创建键值对 设置key-value 允许在key之前不存在的情况下 127.0.0.1:6379 SETNX mykey hello (integer) 1 127.0.0.1:6379 SETNX mykey world (integer) 0 127.0.0.1:6379 get mykey helloSET、SETNX、SETXX其实一个set也就够用了后面两个完全不需要去记只要会set 相关的命令后面两个命令都很简单 4.3、计数命令 4.3.1、单增命令 key对应string表示的数字加一如果key不存在则视为key对应的value是0这里key可以是string类型创建的但是他必须是一个整型或者不超过64位符号整型 操作命令incr key  下面演示的是正常情况 返回值加1后的值 127.0.0.1:6379 set key5 1 OK 127.0.0.1:6379 EXISTS key5 (integer) 1 127.0.0.1:6379 INCR key5 (integer) 2 127.0.0.1:6379 get key5 2如果是非整型类型的数据 127.0.0.1:6379 get key2 world 127.0.0.1:6379 INCR key2 (error) ERR value is not an integer or out of range这里就拿string类型的来演示 4.3.2、n增命令 单增的情况是比较常见的但是一次增加一个数也不少见使用INCRBY命令操作 操作命令INCRBY key 数值 返回值加后的值 127.0.0.1:6379 EXISTS key5 (integer) 1 127.0.0.1:6379 get key5 2 127.0.0.1:6379 INCRBY key5 10 (integer) 12 127.0.0.1:6379 get key5 12注INCRBY命令返回的是一个数值进行加法后的数值同样如果不是一个整型也会报错的 4.3.3、单减命令 DECR就是key对应string表示的数字减一key不存在则key对应的value是0 返回值减1后的值 127.0.0.1:6379 get key5 12 127.0.0.1:6379 rootubuntu22:~# redis-cli 127.0.0.1:6379 EXISTS key5 (integer) 1 127.0.0.1:6379 get key5 12 127.0.0.1:6379 DECR key5 (integer) 11 127.0.0.1:6379 get key5 114.3.4、n减命令 DECRBY就是针对确定的数字进行减法的 操作命令DECRBY key 数值 返回值减后的值 127.0.0.1:6379 EXISTS key5 (integer) 1 127.0.0.1:6379 get key5 11 127.0.0.1:6379 DECRBY key5 10 (integer) 1 127.0.0.1:6379 get key5 14.3.5、浮点数加减 INCRBYFLOAT命令就是针对浮点小数的加减的 操作命令INCRBYFLOAT key 浮点数 返回值加减完后的值 127.0.0.1:6379 EXISTS key5 (integer) 1 127.0.0.1:6379 get key5 1 127.0.0.1:6379 INCRBYFLOAT key5 0.1 1.1 127.0.0.1:6379 get key5 1.1 127.0.0.1:6379 INCRBYFLOAT key5 -0.5 0.6 127.0.0.1:6379 get key5 0.6注INCRBYFLOAT后面跟值是正数就进行 “” 如果是负数 “-” 4.4、string获取相关命令 4.4.1、末尾追加命令 操作命令 APPEND key  value 返回值追加后整个string的长度 127.0.0.1:6379 EXISTS key2 (integer) 1 127.0.0.1:6379 get key2 world 127.0.0.1:6379 APPEND key2 hello (integer) 10 127.0.0.1:6379 get key2 worldhello4.4.2、获取string指定区间 操作命令GETRANGE key start end 127.0.0.1:6379 set mykey this is a people OK 127.0.0.1:6379 GETRANGE mykey 0 4 this 127.0.0.1:6379 GETRANGE mykey -5 -1 eople 127.0.0.1:6379 GETRANGE mykey 0 -1 this is a peopleGETRANGE区间的选定的是比较类似于Python的可以支持负数这里0 到 -1 表示的就是到最后一个位置 -1 也表示当前字符串的最大长度该命令类似于子串的截取 4.4.3、子串的覆盖 操作命令SETRANGE key offset value offset 就是偏移量 value就是string内容 返回值替换后string的长度 127.0.0.1:6379 set key1 Hello world xx OK 127.0.0.1:6379 get key1 Hello world 127.0.0.1:6379 SETRANGE key1 6 redis (integer) 11 127.0.0.1:6379 get key1 Hello redis注这里第一条命令使用了 xx 是因为我这里位置直接覆盖原来的内容方便演示前面对xx提到过。 4.4.4、获取string长度 操作命令STRLEN key 127.0.0.1:6379 get mykey this is a people 127.0.0.1:6379 STRLEN mykey (integer) 16 127.0.0.1:6379 STRLEN hello (integer) 0注如果当前key值存在会打印出对应的key的长度如果不存在的话就直接返回0 4.4.5、内部编码 其实string针对不同长度和字符类型是有一个定区别的 字符串类型的内部编码有三种 int 8个字节的长整型如果是数值的字符串会以int的形式存在的内部会存储为二进制形式 embstr小于等于 39 个字节的字符串浮点小数也是数值都是可以设置所以这里只是提下 raw大于39个字节的字符串 查看类型操作命令object encoding key 127.0.0.1:6379 get key5 0.6 127.0.0.1:6379 object encoding key5 embstr 127.0.0.1:6379 set key6 1 OK 127.0.0.1:6379 object encoding key6 int 127.0.0.1:6379 set key7 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa OK 127.0.0.1:6379 object encoding key7 raw4.5、Hash哈希 注Hash很多命令都和string命令很相似印象记忆即可 基本学习编程语言得都会接触到哈希redis也是一样都是以键值对的形式存在的 字符串和哈希进行对比 4.5.1、创建哈希键值对 操作命令HSET key field value 这里可以设置多组field value 最低版本2.0 返回值添加的字段的个数 127.0.0.1:6379 HSET myhash say1 hello (integer) 1 127.0.0.1:6379 HGET myhash say1 hello4.5.2、删除键值对 操作命令HDEL key field field可以是多个 返回值本次操作删除的字段个数 127.0.0.1:6379 HSET myhash field1 world field2 world2 (integer) 2 127.0.0.1:6379 HEXISTS myhash field1 (integer) 1 127.0.0.1:6379 HDEL myhash field1 (integer) 1 127.0.0.1:6379 HKEYS myhash 1) say1 2) field2 注这里HEXISTS就是看一下哈希键中存不存在值存在就可以进行删除了使用类似于StringKEYS命令就可以进行查看hash采用HKEYS 4.5.3、获取hash中所有值 操作命令HVALS key 返回值所有值 127.0.0.1:6379 HVALS myhash 1) hello 2) world24.5.4、获取所有字段和对应值 操作命令HGETALL key 返回值所有字段和对应值 127.0.0.1:6379 HSET myhash field hello (integer) 1 127.0.0.1:6379 HSET myhash field1 world (integer) 1 127.0.0.1:6379 HGETALL myhash 1) field 2) hello 3) field1 4) world注这里的返回值奇数位是field 偶数位是 value 上下对应的 4.5.5、一次获取hash多个字段值 操作命令HMGET key field 可以获取多个field对应的值 返回值字段对应值或者是nil 127.0.0.1:6379 hset myhash field2 hello field3 world (integer) 2 127.0.0.1:6379 HMGET myhash field2 field3 say 1) hello 2) world 3) (nil)注我这里会时不时删除myhash中的field为了方便演示 4.5.6、hash所有字段的个数 操作命令HLEN key 返回值字段个数 127.0.0.1:6379 HSET myhash field4 xiaoxu (integer) 1 127.0.0.1:6379 HSET myhash field5 xiaoli (integer) 1 127.0.0.1:6379 HKEYS myhash 1) field2 2) field3 3) field4 4) field5 127.0.0.1:6379 HLEN myhash (integer) 4注这里给友友们提供了常见命令例如剩下的HSETNX、HINCRBY、HINCRBYFLOAT等命令可以自己去官网上看看了解一下 4.5.7、内部编码 哈希的内部编码有两种 ziplist压缩链表配置文件会有这两个值hash-max-ziplist-entries 512、hash-max-ziplist-value 64是作为限制的都是可以配置数字是可以进行更改的当哈希类型元素个数小于hash-max-ziplist-entries 配置512 同时所有值都小于hash-max-ziplist-value配置 64redis会将ziplist作为哈希内部实现如果不能满足就会使用hastable前者比较省内存 hashtable哈希表当哈希类是无法满足ziplist的时候redsi就会使用hashtable作为哈希的内部实现为了读写效率hashtable此时的读写效率仍旧是O1 127.0.0.1:6379 HMSET hashkey f1 v1 f2 v2 OK 127.0.0.1:6379 object encoding hashkey ziplist 127.0.0.1:6379 hset hashkey f3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (integer) 1 127.0.0.1:6379 object encoding hashkey hashtable注这里只演示了如果值字节大小超过了64会变成hashtable512就不演示了这里友友们可押进行尝试一下可以进行修改后再去尝试毕竟512实在是太多了 4.6、List列表 列表类型是用来存储多个有序的字符串Redis中可以列表的两端进行插入和弹出还可以获取指定范围的元素列表、获取指定索引下标饿元素等列表是一种的比较灵活的数据结构它可以充当栈和队列的角色 左端和右端可进可出灵活性高可以适合很多的应用场景在于自己构造 注列表允许存在重复元素 4.6.1、左侧插入 操作命令LPUSH key element 多个元素 返回值插入后list的长度 127.0.0.1:6379 LPUSH mylist world (integer) 1 127.0.0.1:6379 LPUSH mylist hello (integer) 2 127.0.0.1:6379 LRANGE mylist 0 -1 1) hello 2) world注返回值显示的list的长度不是内容长度 左侧插入第一个是world 第二次插入一个hellohello插入在world左侧所以显示出来就是先hello 后 world 4.6.2、右侧插入 操作命令RPUSH 将一个或者多个元素从的右侧放入到list中 返回值插入后list的长度 127.0.0.1:6379 RPUSH mylist world (integer) 1 127.0.0.1:6379 RPUSH mylist hello (integer) 2 127.0.0.1:6379 LRANGE mylist 0 -1 1) world 2) hello注打印出来的刚好是与LPUSH显示相反的 4.6.3、显示所有的list列表 操作命令LARANGE key 返回值key中所有的值 4.6.4、左侧抛出元素 操作命令LPOP key 返回值抛出元素打印 127.0.0.1:6379 RPUSH mylist one two three four five (integer) 5 127.0.0.1:6379 LPOP mylist one 127.0.0.1:6379 LPOP mylist two 127.0.0.1:6379 LPOP mylist three 127.0.0.1:6379 LRANGE mylist 0 -1 1) four 2) five注这里采用右侧插入左侧抛出相当于是队列 4.6.5、右侧抛出元素 操作命令RPOP key 返回值取出的元素或者nil 127.0.0.1:6379 RPUSH mylist one two three four five (integer) 5 127.0.0.1:6379 RPOP mylist five 127.0.0.1:6379 LRANGE mylist 0 -1 1) one 2) two 3) three 4) four注这里是右侧输出 4.6.6、获取index位置元素 操作命令LINDEX key index 返回值取出的元素或者nil 127.0.0.1:6379 LPUSH mylist world (integer) 1 127.0.0.1:6379 LPUSH mylist hello (integer) 2 127.0.0.1:6379 LINDEX mylist 0 hello 127.0.0.1:6379 LINDEX mylist 1 world 127.0.0.1:6379 LINDEX mylist -1 world 127.0.0.1:6379 LINDEX mylist 10 (nil)注redis是支持负数的访问相当于是倒序访问如果不存在的话访问结果为nil 4.6.7、特定位置插入元素 操作命令LINSERT key BEFORE | AFTER pivot element BEFORE在指定元素之前插入 AFTER在指定元素之后插入 pivot指定的元素 element新的元素 注大部分参数都是英文翻译过来就能理解这里也是一样的 返回值插入后的list长度 127.0.0.1:6379 RPUSH mylist hello (integer) 1 127.0.0.1:6379 RPUSH mylist world (integer) 2 127.0.0.1:6379 LINSERT mylist BEFORE world There (integer) 3 127.0.0.1:6379 LRANGE mylist 0 -1 1) hello 2) There 3) world4.6.8、扩展命令 1LLEN是计算这个list的元素个数的也就是长度 2阻塞相关命令BLPOP、BRPOP这两个阻塞命令友友们可以去看看redis官网可以使用redis作为一个阻塞队列当然消息队列是有其他更合的中间件 4.6.9、内部编码 list的内部编码也有两种ziplist压缩列表linkedlist链表针对redis 3.2以下的版本 ziplist压缩列表列表的元素个数⼩于list-max-ziplist-entries配置默认512个同时 列表中每个元素的⻓度都⼩于list-max-ziplist-value配置默认64字节时Redis会选⽤ ziplist来作为列表的内部编码实现来减少内存消耗 注不要记数值 数值是可以自行配置的 LinkedList链表当列表类无法满足ziplist的时候redis会使用linkedlist作为list列表实现 127.0.0.1:6379 RPUSH mylist hello (integer) 1 127.0.0.1:6379 OBJECT encoding mylist ziplist 127.0.0.1:6379 RPUSH mylist aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (integer) 2 127.0.0.1:6379 OBJECT encoding mylist linkedlistquicklist快速列表是针对redis3.2以上的版本综合了前面两种数据结构 127.0.0.1:6379 RPUSH mylist hello (integer) 1 127.0.0.1:6379 OBJECT encoding mylist quicklist4.7、Set集合 集合类型也是保存多个字符串类型的元素的但和列表类型不同的是集合中1元素之间是⽆序 的2元素不允许重复Redis除了⽀持集合内的增删查改操作同时还⽀持多个集合取交集、并集、差集合理地使⽤好集合类型 4.7.1、添加元素 操作命令SADD key member 可以有多个元素 返回值本次添加的元素个数 127.0.0.1:6379 SADD myset hello (integer) 1 127.0.0.1:6379 SADD myset world (integer) 1 127.0.0.1:6379 SADD myset world (integer) 0 127.0.0.1:6379 SMEMBERS myset 1) hello 2) world注这里不难看出world在同一个键中存了两次第二次存的时候返回值是0表示失败 SMEMBERS打印指定key的所有值这个显示是无序的 4.7.2、判断key是否存在 操作命令SISMEMBER key member 返回值1表示元素存在0表示元素不存在 127.0.0.1:6379 SADD myset one (integer) 1 127.0.0.1:6379 SADD myset two (integer) 1 127.0.0.1:6379 SISMEMBER myset two (integer) 1 127.0.0.1:6379 SISMEMBER myset three (integer) 04.7.3、获取集合内的个数 操作命令SCARD key 返回值set内的元素个数 127.0.0.1:6379 SCARD myset (integer) 24.7.4、随机元素 注这里的删除是随机删除有set内的元素是无序的 时间复杂度O(1) 返回值取出的元素 127.0.0.1:6379 SADD myset one (integer) 1 127.0.0.1:6379 SADD myset two (integer) 1 127.0.0.1:6379 SADD myset three (integer) 1 127.0.0.1:6379 SPOP myset two 127.0.0.1:6379 SMEMBERS myset 1) one 2) three 127.0.0.1:6379 SADD myset four (integer) 1 127.0.0.1:6379 SADD myset five (integer) 1 127.0.0.1:6379 SPOP myset 3 1) one 2) five 3) three 127.0.0.1:6379 SMEMBERS myset 1) four注如果是全部照敲的话大概率应该是跟我不一样的SPOP是随机抛出的 4.7.5、指定元素删除 时间复杂度O(N) 操作命令SREM key member 可以设置多个 127.0.0.1:6379 SADD myset one (integer) 1 127.0.0.1:6379 SADD myset two (integer) 1 127.0.0.1:6379 SADD myset thre (integer) 1 127.0.0.1:6379 SREM myset thre (integer) 1 127.0.0.1:6379 SMEMBERS myset 1) one 2) two注这里就是说删谁就删谁但是会消耗掉时间所以时间复杂度相较于随机删除就慢一点 4.7.6、移动元素 注从一个键中移到另外一个键里 操作命令SMOVE source destination member source原键 destination目标键 member原键的值 返回值1表示移动成功0表示移动失败 127.0.0.1:6379 SADD myset one (integer) 1 127.0.0.1:6379 SADD myset two (integer) 1 127.0.0.1:6379 SADD myotherset three (integer) 1 127.0.0.1:6379 SMOVE myset myotherset two (integer) 1 127.0.0.1:6379 SMEMBERS myset 1) one 127.0.0.1:6379 SMEMBERS myotherset 1) two 2) three注 关键代码翻译  从myset移动到myotherset的值为two 4.7.7、内部编码 集合类型的内部编码有两种 intset整数集合当集合中的元素都是整数并且元素的个数⼩于set-max-intset-entries配置 默认512个时Redis会选⽤intset来作为集合的内部实现从⽽减少内存的使⽤这个值是可以设置的 hashtable哈希表当集合类型⽆法满⾜intset的条件时Redis会使⽤hashtable作为集合的内部实现 127.0.0.1:6379 SADD setkey 1 2 3 (integer) 3 127.0.0.1:6379 object encoding setkey intset 127.0.0.1:6379 SADD setkey 4 5 (integer) 2 127.0.0.1:6379 object encoding setkey hashtable 127.0.0.1:6379 SCARD setkey (integer) 5注这里是因为我修改了配置文件set-max-intset-entries 个数为4关闭redis后重启就可以了这里是为了给友友们展示知道即可不需要这样 4.8、Zset有序集合 有序集合中的元素是不能重复的但分数允许重复。类⽐于⼀次考试之后每个⼈⼀定有⼀ 个唯⼀的分数但分数允许相同 注下面会很长用到一个查询命令ZRANGE key start end 和前面基本很相似 4.8.1、添加元素 操作命令ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member可以多个] 别看参数多这里只介绍常用的 XX仅仅添加更新已经存在的元素不会添加新元素 NX仅哟弄过于添加新元素不会更新已经存在的元素 CH默认情况ZADD返回的是是本次添加元素个数但指定这个选项之后就会还包含本次更新的元素个数 INCR此时命令类似ZINCRBY的效果将元素的分数加上指定的分数此时只能指定一个元素和分数 score 表示的是一个分数zset就是根据这个分数进行排序的 member是元素每个元素都带有一个分数 下面我我就会就开始挨个看 [] 括号内的是可以不写的可以省略的 127.0.0.1:6379 ZADD myzset 1 one (integer) 1 127.0.0.1:6379 ZADD myzset 1 uno (integer) 1 127.0.0.1:6379 ZADD myzset 2 two 3 three (integer) 2 127.0.0.1:6379 ZRANGE myzset 0 -1 withscores 1) one 2) 1 3) uno 4) 1 5) two 6) 2 7) three 8) 3 127.0.0.1:6379 ZADD myzset 10 one 20 two 30 three (integer) 0 127.0.0.1:6379 ZRANGE myzset 0 -1 withscores 1) uno 2) 1 3) one 4) 10 5) two 6) 20 7) three 8) 30注这里是基本的命令还有就是针对zset不可重复进行展示设置过的键值不加特殊处理是不能进行修改的 演示CH 、XX 参数选项 127.0.0.1:6379 ZADD myzset CH 100 one 200 two 300 three (integer) 3 127.0.0.1:6379 ZRANGE myzset 0 -1 withscores 1) uno 2) 1 3) one 4) 100 5) two 6) 200 7) three 8) 300 127.0.0.1:6379 ZADD myzset XX 99 one 200 two 300 three (integer) 0 127.0.0.1:6379 ZRANGE myzset 0 -1 withscores 1) uno 2) 1 3) one 4) 99 5) two 6) 200 7) three 8) 300注XX是不能添加新元素的因为添加不进去 NX只能添加新元素半不能更改元素内容 127.0.0.1:6379 ZADD myzset NX 100 one 200 two 300 three 400 four 500 five (integer) 2 127.0.0.1:6379 ZRANGE myzset 0 -1 withscores1) uno2) 13) one4) 995) two6) 2007) three8) 3009) four 10) 400 11) five 12) 500注注意细节one还是99 并没有改为100因为NX只能负责添加新元素已有的保持不变 INCR进行元素添加添加添加分数 对应的键 127.0.0.1:6379 ZADD myzset incr 10 one 109 127.0.0.1:6379 ZRANGE myzset 0 -1 withscores1) uno2) 13) one4) 1095) two6) 2007) three8) 3009) four 10) 400 11) five 12) 500注这里是添加给one这里就会看到one是对应分数109 给友友们看一下无限大和无限小 127.0.0.1:6379 ZADD myzset -inf first inf last (integer) 2 127.0.0.1:6379 ZRANGE myzset 0 -1 withscores1) first2) -inf3) uno4) 15) one6) 1097) two8) 2009) three 10) 300 11) four 12) 400 13) five 14) 500 15) last 16) inf4.8.2、获取一个zset的个数 操作命令ZCARD key 返回值zset内的元素 127.0.0.1:6379 ZCARD myzset (integer) 84.8.3、取指定分数区间 操作命令ZCOUNT key min max 返回值满足条件的元素列表个数 127.0.0.1:6379 ZRANGE myzset 0 -1 withscores1) first2) -inf3) uno4) 15) one6) 1097) two8) 2009) three 10) 300 11) four 12) 400 13) five 14) 500 15) last 16) inf 127.0.0.1:6379 ZCOUNT myzset 50 400 (integer) 4注redis采用的是左闭右闭的结构所以这里包括400在内的都会被算进去 4.8.4、按照降序进行排列 操作命令ZREVRANGE key start stop [withscores] 返回值区间内的所有元素 127.0.0.1:6379 ZRANGE myzset 0 -1 withscores1) first2) -inf3) uno4) 15) one6) 1097) two8) 2009) three 10) 300 11) four 12) 400 13) five 14) 500 15) last 16) inf 127.0.0.1:6379 ZREVRANGE myzset 0 -1 withscores1) last2) inf3) five4) 5005) four6) 4007) three8) 3009) two 10) 200 11) one 12) 109 13) uno 14) 1 15) first 16) -inf注这里只是降序打印 4.8.5、只返回元素列表 操作命令ZRANGEBYSCORE key min max 返回值 区间内的元素列表 127.0.0.1:6379 ZRANGEBYSCORE myzset -inf inf 1) first 2) uno 3) one 4) two 5) three 6) four 7) five 8) last4.8.6、内部编码 有序集合类型的内部编码有两种 ziplist压缩列表当有序集合的元素个数小于zset-max-ziplist-entries配置 默认128同时每个元素的值都小于zset-max-ziplist-value配置默认 64redis会用ziplist来作为有序集合的内部实现ziplist可以有效减少内存的使用 skiplist跳表当ziplist条件不满足时有序集合会使用skiplist作为内部实现因为此时ziplist效率会下降 127.0.0.1:6379 zadd myzset 100 one 200 two 300 three (integer) 3 127.0.0.1:6379 object encoding myzset ziplist 127.0.0.1:6379 zadd myzset 400 four 500 five (integer) 2 127.0.0.1:6379 object encoding myzset skiplist注这里我们修改了配置文件为了方便显示友友知道即可ZSET命令还有很多友友们可以去官网看看
http://www.hkea.cn/news/14580166/

相关文章:

  • 自助建站公司正规投资app平台
  • 常用于做网站的软件wordpress事例
  • 上杭网站制作网站微信公众号链接怎么做
  • 网站地图怎么生成关键词优化除了做网站还有什么方法
  • 合肥有没有做网站的单位餐饮营销手段13种手段
  • 贵阳网站开发价格购物网站建设成本
  • 公司想做网站开江网站建设
  • 云南建设局网站首页企业做网站应该注意的问题
  • 宁波网站制作企业石家庄今天又发现一例
  • 洛阳建设工程网站广告公司简介
  • 网站建设与推广方式酒店电子商务网站策划书
  • 单页淘宝客网站dz可以做门户网站吗
  • 张家港市网站建设东莞网站设计精英
  • 建筑资料网站大全西安app网站开发
  • 盐都城乡建设部网站首页建设网站有什么风险
  • 新沂市建设局网站免费创建一个网页
  • 做彩票网站代理赚钱吗网站虚拟主机哪个好
  • 网站建设网上消费算在年费百度关键词价格怎么查询
  • 营销型企业网站建设应遵守的原则wordpress 主页不显示
  • 最常用的网站开发工具自建房设计app
  • 网站开发与应用 大作业作业海外购物网站大全
  • 弄个做网站公司专业建站网站服务
  • 建站程序员招聘建设公司与建筑公司的区别
  • 专业网站设计怎么做三亚最新发布
  • 青岛网站开发哪家好搜索引擎优化好做吗
  • 用家用光纤宽带做网站市场调研分析
  • 朝阳网站建设北京建筑设计公司有哪些
  • 北京建站公司哪家好上海百度seo网站优化
  • 自己编程做网站电子商务培训
  • 烟台网站改版济南建站联系企汇优