标签:范围查询 事件 val 高并发 散列 占用 strong 网络io lua
Redis 一个开源的,内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件。
它支持多种类型的数据结构,如 字符串 string
、散列 hashes
、列表 list
、集合 set
、有序集合 zset
和 范围查询
,bitmaps
、hyperloglog
、地理空间 geospatial
、索引半径查询
。
Redis 内置了复制
,LUA脚本
,LRU驱动事件
,事务
,不同级别的磁盘持久化
,并通过Redis哨兵
和自动分区
提供高可用性能。
key - value
类型数据,同时还提供 list
,set
,zset
,hash
,string
多种数据结构存储。备份
与 集群
以及拥有哨兵临控机制。经过官方的 bench-mark数据,测试完成了50个并发执行100000个请示。设置和获取的仠是一个256字节字符串,结果:读取的速度是110000次/s
,写的速度是 81000次/s
,redis尽量少写多读,符合缓存的适用要求。redis 支撑万级,10万级的可以采用主从复制的模式。
1、Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO
中,所以读取速度快。
2、Redis 使用的是非阻塞IO
,IO多路复用
,使用了单线程来轮询描述符,将数据库的开,关,读,写,都转换成了事件,减少了线程切换时上下文的切换和竞争。
3、Redis 采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。
4、Redis 的存储结构多样化,不同的数据结构对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。
5、Redis 采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。
Redis 因为是单线程的,所以不用考虑各种锁的性能消耗,不存在加锁采方向锁操作,没有因为可能出现死锁而导致的性能消耗。单线程肯定比不上多线程的性能高,但是在今天互联网环境下面,单机的多线程也不能满路需求了,所以需要进行应用的集群化,这种情况下,多线程也用不上了。
Redis 采用网络IO多络复用
技术来保证在多连接的时候,系统的高吞吐量。
多路
:指的是多个socker
连接,复用
:批的是复用一个线程。采用多路IO复用技术可以让单个线程高效处理多个连接请示,且redis在内存中,所以操作数据的速度非常快。
细节决定成败!
个人愚见,如有不对,恳请扶正!
标签:范围查询 事件 val 高并发 散列 占用 strong 网络io lua
原文地址:https://www.cnblogs.com/FrostBoy/p/14898762.html