Redis总结1

Redis 定义

Redis是一个由ANSIC编写的,基于内存高性能key-value 非关系型数据库.

Redis的特点

Redis本质上是一个key-value类型的数据库,很像memcahe,整个数据库的加载和操作都在内存上,为保证数据的持久性,可定时通过异步操作把数据存储到硬盘当中.

由于数据存储加载和操作均在内存上,Redis的性能远胜mysql,Oracle等,读写操作为 10w/s ,是目前最快的key-value数据库.

除了性能还有另一大优势,支持多种数据库(仅限单机模式),单机模式下16个数据库,且互相隔离,Redis的在理想情况下每个value值最大限制1G,不像memcher只能存储1M的数据

Redis 支持多个种数据类型,List ,Set ,Sorted Set ,Map , String ,可实现多种功能.比放说它的List来做FIFO双向链表,可以实现一个轻量级的高性能消息队列服务,Set可以做高性能的tag系统等…另外Redis也 可以对存储key-value 设置expire时间(过期),实现和memcached的功能.

Redis的缺点

内存不能像硬盘那样有巨大的存储空间,所以不能存储大量数据,只能处理高并发的少量数据

Redis有哪些好处

  1. 速度快,因为数据库存在内存中,类似于HashMap,查找和操作的时间复杂度为O(1);
  2. 支持多种数据类型,List , Map , Set, Sort Set, String
  3. 支持事务, 遵循 ACID,原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)
  4. 丰富的特性,可用于缓存消息,按key设置过期时间,过期自动删除

Redis常见性能问题和解决方案

  1. Master写内存快照 save命令调整 rdbSave函数,会阻塞主线程工作,当快照比较大时对性能影响是比较大的,会间断性暂停服务,所以Master最好不要写内存快照
  2. Master AOF持久化,如果不重写AOF文件,这种持久化方式对性能的影响是最小的,但是AOF文件会一直增加,AOF文件过大会影响Master重启恢复连接的速度,Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别不需要启动AOF做持久化,如果数据比较关键,可以为某个slove开启AOF 备份数据,策略为每秒一次
  3. Master调用 BGREWRITEAOF 重写AOF文件,AOF在重写的时候会占大量的CPU和内存资源,导致服务load 过高,出现短暂的服务暂停现象
  4. Redis主从复制性能问题,为了主从复制的速度和稳定性,Slave 和 Master最好在同一局域网
  5. MySQL 里面有200w,Redis中只能存储20W 的数据,如何保证redis中的数据都是热点数据

Redis提供的6种数据淘汰策略


  1. volatile-lru:从已设置过期时间的数据集(server.db[i].expires) 中挑选最近最少使用的数据
  2. volatile-random:从已设置过期时间的数据集集中,任意选择数据淘汰
  3. volatile -ttl :从已设置过期时间的数据集中挑选将要过期的数据淘汰
  4. allkeys -lru:从数据集(server.db[i].dict) 中挑选最近最少使用的数据
  5. allkeys -random:从数据集中任意选择数据淘汰
  6. no -enviction:禁止数据淘汰
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章