logo资料库

redis基础知识培训.pptx

第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
资料共34页,剩余部分请下载后查看
2 3 4 5 6 7 8 理解Redis通信协议 Redis数据类型介绍 Redis键管理知识介绍 Redis开发场景简介 Redis复制、持久化、集群介绍 Redis使用相关知识介绍
Redis介绍 Redis简介:Redis是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是完全开源免费的,遵守BSD协议,是 一个高性能的key-value数据库。它通常被称为数据结构服务器,因为值(value)可以是字符串(String),哈希 (Map),列表(list),集合(sets)和有序集合(sorted sets)等类型。redis支持持久化、支持数据备份。 Redis特性 (一)存储结构 Redis是Remote Dictionary Server的缩写,它使用字典结构存储数据,并允许其他应用通过TCP协议读写字典中的 内容。同大多数脚本语言中的字典一样,Redis字典中的键值除了可以是字符串,还可以是其他数据类型。 Redis支持的数据类型有字符串、散列、列表、集合、有序集合。 (二)内存存储与持久化 Redis数据库的所有数据都存储在内存中。在一台普通的笔记本电脑上,Redis可以在1秒内读写超过十万个键值。 Redis也提供了持久化的支持,即将内存中的数据异步写入硬盘中,同时不影响继续提供服务。 (三)功能丰富 Redis在很多场合是名副其实的多面手,越来越多的人将其用作缓存、队列系统中。例如,Redis可作为缓存系 统,并且可以为每个键设置生存时间,生存时间到期后键会自动删除;Redis还支持“发布/订阅”的消息模式, 等等。 (四)简单稳定 在Redis中使用命令来读写数据,就相当于SQL语言之关系型数据库。并且Redis提供了几十种不同编程语言的客 户端库,这些库很好地封装了Redis命令,使得在程序中与Redis进行交互更加容易。Redis是开源的,良好的开发 氛围和严谨的版本发布机制使得Redis的稳定版本更加可靠。
理解Redis事件模型 Redis是一个事件驱动的内存数据库,服务器需要处理两种类型的事件。文件事件和时间事件 文件事件: Redis服务器通过Socket实现与客户端(或其他redis服务器)的交互,文件事件就是服务器对Socket操作的抽 象。Redis服务器,通过监听这些socket产生的文件事件并发处理这些事件,实现对客户端调用的响应。 Redis基于Reactor模式开发了自己的事件处理器。 fd fd fd fd fd fd I/O多路复用(multiplexing)模块 事件分发器(dispatcher) 连接应答处理器 acceptTcpHandler 命令请求处理器 readQueryFromClient 命令回复处理器 sendReplyToClient
理解Redis事件模型 时间事件:Reids 有很多操作需要在给定的时间点进行处理,时间事件就是对这类定时任务的抽象。 定时事件: 指定时间后执行一次 时间处理器返回AE_NOMORE,该事件达到一次后删除 周期事件: 每隔指定时间执行一次 事件处理器返回非AE_NOMORE整数值,根据该值更新when属性,让该事件存在一段时间 后再次到达 时间事件3个属性 id:全局唯一,递增分配 when:毫秒精度UNIX时间戳,记录时间事件的到达时间 timeProc:时间事件处理器,一个函数,时间事件到达时,服务器调用相应器处理事件 实现原理 服务器将所有时间事件放在一个无序链表(when属性无序) 当时间事件执行器运行时遍历整个链表,查找所有已到达的时间事件,然后调用相应事件处理器
理解Redis通信协议 Redis是一个接受并处理来自客户端请求的非阻塞、I/O复用的TCP服务器。对于Redis来说,这种通信协议叫 做Redis Serialization Protocol(RESP,Redis序列化协议)。 RESP协议支持的数据类型 间隔符号,在Linux下是\r\n,在windows下是\n 1、简单字符串Simple Strings,以“+”加号开头 格式:+字符串 \r\n 字符串不能包含CR或者LF(不允许换行) eg:"+OK\r\n" 注意:为了发送二进制安全的字符串,一般推荐使用后面的Bulk Strings类型。 2、错误Errors,以“-”减号开头 格式:-错误前缀 错误信息\r\n 错误信息不能包含CR或者LF(不允许换行),Errors与Simple Strings很相似,不同的是 Erros会被当作异常来看待。eg:"-Error unknow command 'foobar'\r\n" 3、整数型Integer,以“:”冒号开头 格式:数字\r\n eg: “:1000\r\n”
理解Redis通信协议 4、大字符串类型Bluk Strings,以“$”美元符号开头,长度限制512M 格式:$字符串的长度\r\n字符串\r\n 字符串不能包含CR或者LF(不允许换行); eg:"$6\r\nfoobar\r\n"其中字符串为foobar,而6就是foobar的字符长度 "$0\r\n\r\n" 空字符串 "$-1\r\n" null 5、大字符串类型Bluk Strings,以“$”美元符号开头,长度限制512M 数组类型Arrays,以“*”星号开头 格式:*数组元素个数\r\n其他所有类型(结尾不需要\r\n)
Redis数据类型 1 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,例如存储用户的邮箱、JSON化的对象甚 至是一张图片。一个字符串类型键允许存储的数据的最大容量是512MB。字符串涉及的命令:set、get、strlen、 append、setrange。 2 列表类型 列表时应用程序开发中非常有用的数据类型之一。列表能够存储一组对象,因此它也可以被用作栈或者队列。 在redis中,与键相关联的值可以是字符串组成的列表,Redis中的列表更像是数据结构中的双向链表。列表操作 涉及的命令:LPUSH、LRANGE、RPUSH、LINSERT、LINDEX 3 哈希类型 哈希表示字段和值之间的映射关系, HMSET "kyoto Ramen" "address" "801 Mission St,San Jose,CA" "phone" "555-123-6543" "rating" "5.0" 与哈希类型操作相关的命令:HMSET、HMGET、HEXISTS 、HGETALL 、HSET、HGET、HSCAN 4 集合类型 集合类型是由唯一、无序对象组成的集合(collection)。它经常用于测试某个成员是否在集合中、重复项删除 和集合运算(求并、交、差集)。Redis的值对象可以是字符串集合。 与集合类型操作相关的命令:SADD、SISMEMBER、SREM、SCARD、SSCAN
Redis数据类型 5 有序集合(sorted set)类型 有序集合是一个类似但更复杂的数据类型。单词“Sorted”意味着这种集合中的每个元素都拥有一个可用于 排序的权重,并且我们可以按顺序从集合中获取元素。 与有序集合操作相关的命令:ZADD、ZREVRANGE、ZINCRBY、ZREVRANK、ZSCORE 6 HyperLogLog类型 在日常的各种数据处理场景中,“唯一计数”是一项常见的任务。在Redis中,虽然我们可以使用集合来进 行唯一计数;但是,当数据量增大到上千万时,就需要考虑内存消耗和性能下降问题了。我国我们不需要 获取数据集的内容,而只是想得到不同值的个数,那么就可以使用HyperLogLog(HLL)数据类型来优化使用集 合类型时存在的内存和性能问题。 相关操作命令:PFADD PFCOUNT PFMERGE 7 GEO类型 Redis从3.2版本开始正式引入了Geo(地理位置)相关的API,用于支持存储和查询这些地理位置相关场景 中的坐标。相关操作命令:GEOADD GEOPOS GEORADIUS GEODIST 等命令 关于Key过期时间
分享到:
收藏