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%的数据上。这时为了减轻数据的压力和提高网站的数据访问速度,则可以使用缓存机制来优化网站

浙公网安备 33010602011771号