标题:redis总结万能手册,熟悉不等于精通;
引言:平常工作总结,自动化安装,应用接入,测试……
1、redis简介redis是一个开源的基于内存操作的数据结构存储系统,它能够用作数据库、缓存和信息中间件;支持多种类型的数据结构,如 字符串(strings),hash表(hashes), 有序列表(lists),集合(sets),有序集合(sorted sets),范围查找,bitmaps,hyperloglogs 和 地理空间(geospatial);内置了节点复制(replication),LUA 脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions)和区别级别的 磁盘持久化(persistence),能够经过 哨兵(Sentinel)和集群(Cluster)供给高可用。1.1、特性基于内存的操作,因此速度快,官方数据单节点读 110000次/s,写81000次/s。用C语言实现,离操作系统更近。单线程架构,6.0起始支持多线程(CPU、IO读写负荷);支持数据持久化,异步保留到硬盘,防宕机丢失。持久化模式位 RDB 和 AOF;多种数据结构:不仅支持简单的 key-value 类型数据,还支持:字符串、hash、列表、集合、有序集合;客户端支持多种编程语言,功能丰富,颁布订阅,事务,过期,超大Map,布隆过滤器;简单稳定,源码少,单线程模型,所有的操作都是原子性的,支持操作合并的统一原子性执行;支持数据备份,分片存储,主从复制……满足各样融灾场景,持有哨兵监控机制;1.2、运用场景
数据缓存
业务数据库永远都是最敏锐的环节,最容易达到业务瓶颈,亦最应该被守护。做为核心的存储结构,它的扩容成本和故障成本都比较高,采用redis架设数据缓存便是给数据库套上了缓冲罩,能够是多层,能够是多节点;
计数器
社交活动的点赞,转发,排行榜单,API接口的限流计数……
信息队列
功效于应用解耦,业务的异步处理,还能够做为阀门,掌控队列长度来削峰处理;
分布式锁
做为分布式应用安排下的中间件,在并发减库存时必须时刻关注是不是超减;
新闻弹幕
视频弹幕原理是先缓存了一批,而后再集中推送出去,否则数以万计,百万计同期在线的客户端,需求实时交换弹幕,针对网络吞吐来讲,指的是数级别的,设备成本和守护成本巨大,故此,采用先采集弹幕,而后按时全推的方式,经过加强数据包体积,来缩减吞吐量,亦是redis常用的处理方法。
1.3、高并发原理做为纯内存数据库,一般都是简单的读写操作,线程占用的时间少,时间的花费重点集中在网络通信IO上,因此读取速度快;redis运用的是非阻塞 IO,保准了高性能的吞吐量,I/O的多路复用来监听多个socket,能更好的与单线程模型对接;redis采用了单线程的模型,保准了每一个操作的原子性,亦减少了线程的上下文切换和竞争;redis存储结构多样化,区别的数据结构对数据存储进行了优化,保准读取时索引的速度,如压缩表,对短数据进行压缩存储,再如跳表,运用有序的数据结构加快读取的速度;1.3.1、IO多路复用误区。redis是直接操作内存的,不存在磁盘I/O。这儿的触及到的IO,重点是客户端与服务器之间的socket通信IO,命令是经过socket传输到redis服务的,且按照分布式应用的安排,redis客户端会有多个,因此叫作为多路复用。redis经过运用I/O多路复用程序来监听多个socket,将产生事件的 socket 压入内存队列中,内部运用文件事件分发的架构,按照 socket 上的事件类型来分发给对应的事件处理器进行处理 ,这个事件分发是单线程的,既能实现高性能网络通讯模型,又能够很好的与redis以单线程运行的模块进行对接,保持了redis内部单线程设计的简单性。
重要词,多个socket(客户端),I/O多路复用程序(epoll),socket队列,事件分发器,事件处理器
|