1 Redis 是什么
Redis 是一种开源的非关系型数据库。起源于负载较大时,当前关系型数据库无法承载的情况。
到目前为止,Redis 可以用作数据库、缓存、消息处理。Redis 可以存储键和5种不同数据结构类型之间的映射,分别为 string(字符串)、hash(散列)、list(列表)、set(集合)、zset(有序集合)。
除此之外,Redis 还可以将存储在内存的键值对持久化到硬盘;使用复制以扩展读性能;还可以使用客户端分片扩展写性能。到目前为止,最新的稳定版本已经更新到 6.0.10。
2 两种服务器缓存数据特点
2.1 常规服务器
- 访问频率高,且更新频率较低
- 数据量较大,每次从 db 中读取耗时大
2.2 高并发服务器
- 访问频率高,且更新频率高
例如秒杀、抢购等活动,商品的库存量在短时间内一直变动
3 缓存内容
针对常规服务器,一般缓存查询条件和查询结果。针对高并发服务器,一般缓存查询/更新频率高的数据行。
4 高并发服务器的设计方案
高并发服务器下,要求数据实时性较高,因此设计了一种重复调度、自动缓存的方案。该算法一直在服务器后台运行,当秒杀活动开始时,算法能够自动的读取数据行,并且每隔一段时间对缓存进行更新(允许不定期)。同时,为达到持续运行的目的,编写守护进程进行缓存。
4.1 使用的数据结构
高并发服务器下的缓存方案借助了 Redis 内置的有序集合(zset)和 string,具体的数据结构分别为 schedule 集合、delay