Redis 问题总结

Redis 问题总结

Redis特性有哪些

  • Redis使用标准C编写实现,并且所有数据加载到内存,所以速度特别快
  • 可以将Redis看做”数据结构服务器“。目前Redis支持五种数据结构(String,Hash,List,Set,Sorted Set)
  • 持久化,由于所有数据保存在内存中,所以对数据的更新将异步的保存到磁盘上,Redis使用一些策略保存数据,比如更新时间或者更新次数,数据超过内存,使用swap保证数据。
  • 自动操作。Redis对不同的数据类型操作都是自动的,因此,设置或者增加Key值,从一个集合中增加或者删除一个元素都能安全的操作。
  • 支持多种语言
  • 主-从复制。当主节点出现故障时,可以迅速从从节点进行恢复。读写分离,主节点负责写,从节点负责读,多个从节点分开读。

Redis的单进程和单线程模型

*多路I/O非阻塞模型,select/poll/epoll模型

Redis大量数据插入

  • 使用pipe mode,创建一个包含Redis命令集的文本文件。

提取固定前缀的Key

  • 使用keys指令可以提取指定模式的key列表,但是由于Redis是单线程的,会造成阻塞。可以使用scan命令,但是会有一定的重复,可以提取之后,再进行一次去重。

大量key同时过期

  • 同时过期会有一定的卡顿,所以需要给时间加上一个随机,分散一点

Redis如何做持久化

  • bgsave全镜持久化,因为save会阻塞进程,使用bgsave可以避免这个问题,bgsave通过fork一个子进程来进行bgsave操作

  • aof做增量持久化,由于bgsave耗费的时间比较长,不够实时。如果突然停机的话会造成数据丢失。所以需要AOF进行必要的补充。