redis基本特征

Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。

常见的数据结构类型,如字符串(Strings),散列(Hash),列表(List),集合(Set),有序集合(ZSet)

Redis 内置了复制(Replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(Transactions) 和不同级别的磁盘持久化(Persistence),并通过 Redis哨兵(Sentinel)和集群(Cluster)提供高可用性(High Availability)。

特点

  • 绝大部分请求是纯粹的内存操作,非常快速

  • 数据结构简单,利用操作

  • 采用单线程,避免了不必要的上下文切换,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗

    • 这里我们一直在强调的单线程,只是在处理我们的网络请求的时候只有一个线程来处理
    • 一个正式的Redis Server运行的时候肯定是不止一个线程的,例如Redis进行持久化的时候会以子线程的方式执行 (aof重写用到子进程)
  • 使用多路I/O复用模型,非阻塞IO;

    • 这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 IO 的时间消耗),且 Redis 在内存中操作数据的速度非常快
  • 自定义了通信的应用协议 RESP --> socket

    • 用sockerserver监听jedis发送的命令数据如下:

      第1行 *3 代表后面的指令数据有3组 SET KEY VALUE

    *3
    $3
    SET
    $6
    wesley
    $4
    2018
    
    • 如果我们能把模拟符合【RESP协议的代码指令】发送给redis ,也能操作redis 。

    我们也能用Fiddler 抓包,看看jedis是怎么发送指令的

  • 由于是单线程模型,Redis 更喜欢大缓存快速 CPU, 而不是多核

  • 二八定律:指网站访问数据的特点是:80%的业务访问集中在20%的数据上。这时为了减轻数据的压力和提高网站的数据访问速度,则可以使用缓存机制来优化网站

posted @ 2021-06-27 17:28  沉梦匠心  阅读(98)  评论(0)    收藏  举报