Redis特性
redis特性
1. 速度快
- 内存:数据存储在内存中,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。不同介质速度也是不同的.比如ssd,和机械速度时不同的
- 单线程:避免了不必要的上下文切换和竞争。不用考虑各种锁的问题,不存在加锁释放锁操作,不会因死锁而导致的性能消耗;
- Redis使用I/O多路复用技术,可以处理并发的连接。redis使用非阻塞I/O;
redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。
这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。
2. redis持久化
redis所有数据都保存在内存中,按理说会断电丢失数据.
硬盘是具有持久化特征的,比如说电脑蓝屏时也会将数据down pull到磁盘. redis也会将数据异步的写入到磁盘.提供了RDB 和AOF两种方式.进行持久化,然后进行恢复.
3. 多种数据结构
String 最基本的数据类型,二进制安全
hash String组成的字典,适用于存储对象
linked List 列表按照String元素插入的有序列表
Sets String元素组成的无序集合,通过哈希实现,不允许重复
sorted Set 通过分数来为集合中的成员进行从小到大的排序,不允许重复
特殊类型
bitMap 位图 很小的内存高效存储数据
hyperLoglog超小内存唯一值计算12k,上亿或者是10亿都是12k
GEO 地理信息位置 经度纬度
4. 多语言
- java
- python
- php
- lua
- ruby
- nodejs
- 等等
5. 功能丰富
- 消息订阅
- lua脚本
- 事物
- pipeline
6. 简单
- 不依赖外部库
- 单线程模式
- 23000行代码
6. 高可用,分布式
- 2.8版本redis-sentinel支持高可用
- 3.0版本redis-cluster支持分布式