标签:范围查询 事件 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