什么是redis
redis是一个基于内存的高性能key-value数据库
redis特点
redis本质上是一个key-value类型的内存数据库,整个数据量统统加载在内存中操作,定期异步操作把数据库数据flush到硬盘上保存。性能出色,每秒处理超过10w次读写操作。支持保存多种数据结构,单个value最大限制是1GB。
主要缺点是数据库容量收到物理内存限制,不嫩用作海量数据的高性能读写,因此redis适合在较小数据量的高性能操作上
redis支持数据类型:
Strings
lists
sets
sorted set
hashes
为什么redis需要把所有数据放到内存中
redis为了达到最快读写速度将数据读到内存中,并通过异步的方式写入磁盘。redis具有快速和数据持久化的特征,如果不把数据放入内存,磁盘I/O速度严重影响性能。
redis是单进程单线程的
redis利用队列技术奖并发访问变为串行访问,消除了传统数据库串行控制的开销
分布式
redis支持主从模式。原则:master会将数据同步到slave,而slave不会将数据同步到master。slave启动时会连接master来同步数据
典型的分布式读写分离模型。利用master来插入数据,slave来检索服务
redis回收策略
redis常见性能问题和解决方案
1、master最好不要做持久化工作
2、如果数据比较重要,某个slave开启AOF备份数据,策略设置为每秒一次
3、为了主从复制的速度和连接的稳定性,master和slave最好在同一个局域网内
4、尽量避免在压力很大的主库增加从库
5、主从赋值不要用图状结构,单向链表结构更加稳定
redis适合场景
1、会话缓存
2、全页缓存
3、队列
4、排行榜、计数器
5、发布/订阅