Redis是Remote Dictionary Server
(远程数据服务)的缩写,
由意大利人 antirez
(Salvatore Sanfilippo) 开发的一款 内存高速缓存数据库。
该软件使用C语言编写,它的数据模型为 key-value
。
它支持丰富的数据结构,比如 String
(字符串)list
(双向链表) hash
(哈希) set
(集合) sorted set
(有序集合)。数据可持久化(定时写入磁盘中),保证了数据安全。详细见redis官网 。
- [Sort Set]
排行榜
应用,取top n操作,例如sina微博热门话题 - [List]获得最新N个数据 或 某个分类的最新数据
- [string]计数器应用
incr
- [Set]
sns
(social network site)获得共同好友 - [Set]防攻击系统(ip判断),黑白名单等等
- php5.6 + phpredis扩展
- redis服务
- apache2
- mysql:table 商品表(goods) + 订单表(order)
- 基于goods表中的库存,创建redis商品库存队列
- 客户端访问秒杀API
- 先从redis的商品库存队列中查询剩余库存
- redis队列中有剩余,则在mysql中创建订单,去库存,抢购成功
- redis队列中没有剩余,则提示库存不足,抢购失败
- Redis不仅仅支持简单的
k/v
类型的数据,同时还提供list
,set
,zset
,hash
等数据结构的存储。 - Redis支持
master-slave
(主—从)模式应用。 - Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- Redis单个
value
的最大限制是1GB
, memcached只能保存1MB
的数据。
snappshoting
默认方式- 备份频率
- save
900 1
15分钟至少1个key改变 - save
300 10
5分钟至少10个key改变 - save
60 10000
1分钟至少10000个key改变
- save
- 备份频率
append only file
(aof)- 备份频率
- appendfsync
everysec
每秒强制写入磁盘一次 默认 - appendfsync
always
每次写命令写入磁盘一次 - appendfsync
no
完全依赖os,性能最好,持久化没保证
- appendfsync
- 备份频率