Redis流行的原因

1. Redis是什么Redis官方这样解释
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
简言之Redis(全称:Remote Dictionary Server 远程字典服务)是一个使用ANSI C编写的开源、支持网络、基于内存 , 并提供多种语言API的可持久化的键值对存储数据库 。
2. Redis由来2008年 , 意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG , 然而没过多久该公司的创始人Salvatore Sanfilippo(网名Antirez)便开始对MySQL的性能感到失望 , 于是他决定亲自为LLOOGG量身定做一个数据库 , 并于2009年开发完成 , 这个数据库就是Redis 。
不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品 , 而是希望让更多的人使用它 , 于是在同一年Salvatore Sanfilippo将Redis开源发布 , 并开始和Redis的另一名主要的代码贡献者Pieter Noordhuis一起继续着Redis的开发 , 直到今天 。
Redis流行的原因文章插图
Antirez今年已经四十多岁 , 依旧在孜孜不倦地写代码 , 为Redis的开源事业持续贡献力量 。
Redis端口为什么是6379?
6379 是 "MERZ " 九宫格输入法对应的数字 。 Alessia Merz 是一位意大利舞女、女演员 。 Redis 作者 Antirez 早年看电视节目 , 觉得 Merz 在节目中的一些话愚蠢可笑 , Antirez 喜欢造“梗”用于平时和朋友们交流 , 于是造了一个词 “MERZ” , 形容愚蠢 , 与 “stupid” 含义相同 。 后来 Antirez 重新定义了 “MERZ”, 形容”具有很高的技术价值 , 包含技艺、耐心和劳动 , 但仍然保持简单本质“ 。 到了给 Redis 选择一个数字作为默认端口号时 , Antirez 没有多想 , 把 “MERZ” 在手机键盘上对应的数字 6379 拿来用了 。
3. Redis为什么快?

  1. 完全基于内存 , 绝大部分请求是纯粹的内存操作 , 非常快速
  2. 数据结构简单(数据结构是专门设计的) , 对数据操作也简单
  3. 采用单线程(6.x之前) , 避免了不必要的上下文切换和竞争条件- 不存在多进程/线程切换消耗 CPU- 不存在加锁/释放锁操作 , 没有因为可能出现死锁而导致的性能消耗
  4. 非阻塞I/O多路复用模型
4. RESP协议RESP全称:REdis Serialization Protocol
  • 实现简单
  • 快速解析
  • 可读性强
Redis协议将传输的结构数据分为5种最小单元类型 , 单元结束时统一加上回车换行符号\r\n 。
  1. 单行字符串 以 + 符号开头 。
  2. 多行字符串 以 $ 符号开头 , 后跟字符串长度 。
  3. 整数值 以 : 符号开头 , 后跟整数的字符串形式 。
  4. 错误消息 以 - 符号开头 。
  5. 数组 以 * 号开头 , 后跟数组的长度 。