一、为什么要用redis
1、redis 快
纯内存运行。
单线程处数据。
多路IO复用技术。
数据存储结构底层全局hash表
2、redis并发高。
redis 集群并发度高对比单 mysql 支持并发量1000左右
单redis并发能到10W左右。如果不够可以加分片集群。
二、redis 有那些高级功能
1、redis 支持弱事务
全部执行或者全部不执行。
redis 支持一定的原子性。但是不具备回滚功能。
redis 不具备acid中一致性的概念
redis 具备隔离性
redis 无法保证持久性
说明的时候由入队的前中后的顺序去说明
2、慢查询
通常查询比较慢的 keys * hgetall cs flush all
slow-log-slower-then 选项指定执行时间超过多少微妙
slowlog-max-len 最多保留多少条慢sql
3、pipeline
支持管道批量处理。
使用jedispool 连接池,节省了建立连接connnetion时间。
减少rtt
要消耗大量内存建议1W条内执行
只能执行连续且无关的命令。
三、redis 雪崩、击穿、穿透
穿透
热key 过期
击穿
客户大量请求未知的key
雪崩
大量key失效
四、AOF和rdb文件
rdb文件
AOF 是以实时追加的方式持久化数据的。会导致AOF文件过大 IO出现问题。
AOF重写fork一个子进程(先重构文件 读取当前redis数据写入到aof文件里面 覆盖源文件)重写过程中的数据需要追加到AOF文件中(写入到重写缓冲区)
五、redis 淘汰算法
达到maxmemory 达到这个参数的上线
lru 算法移除最近最少使用的key。
redis4.0之后特性 lfu维持双向链表(比lru更复杂)
六、redis 数据类型
1、字符类型
2、hash
3、列表
4、集合
5、有序集合
6、发布订阅