Redis | 简介

Redis

Redis 简介

Redis 一个开源的,内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件。
它支持多种类型的数据结构,如 字符串 string散列 hashes列表 list集合 set有序集合 zset范围查询bitmapshyperloglog地理空间 geospatial索引半径查询
Redis 内置了复制LUA脚本LRU驱动事件事务,不同级别的磁盘持久化,并通过Redis哨兵自动分区提供高可用性能。

Redis 特点

  • 内存数据库,速度快,也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis 不公公支持简单的 key - value 类型数据,同时还提供 listsetzsethashstring多种数据结构存储。
  • Redis 支持数据的备份 集群以及拥有哨兵临控机制。
  • 支持事务。

Redis 高并发

经过官方的 bench-mark数据,测试完成了50个并发执行100000个请示。设置和获取的仠是一个256字节字符串,结果:读取的速度是110000次/s,写的速度是 81000次/s,redis尽量少写多读,符合缓存的适用要求。redis 支撑万级,10万级的可以采用主从复制的模式。

原理

1、Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO中,所以读取速度快。

2、Redis 使用的是非阻塞IOIO多路复用,使用了单线程来轮询描述符,将数据库的开,关,读,写,都转换成了事件,减少了线程切换时上下文的切换和竞争。

3、Redis 采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。

4、Redis 的存储结构多样化,不同的数据结构对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。

5、Redis 采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。

Redis 的单线程

Redis 因为是单线程的,所以不用考虑各种锁的性能消耗,不存在加锁采方向锁操作,没有因为可能出现死锁而导致的性能消耗。单线程肯定比不上多线程的性能高,但是在今天互联网环境下面,单机的多线程也不能满路需求了,所以需要进行应用的集群化,这种情况下,多线程也用不上了。

IO 多路复用

Redis 采用网络IO多络复用技术来保证在多连接的时候,系统的高吞吐量。
多路:指的是多个socker连接,复用:批的是复用一个线程。采用多路IO复用技术可以让单个线程高效处理多个连接请示,且redis在内存中,所以操作数据的速度非常快。



关注公众号,随时获取最新资讯

细节决定成败!
个人愚见,如有不对,恳请斧正!

posted @ 2021-06-18 11:20  一点浩然气~  阅读(125)  评论(0编辑  收藏  举报