1、Redis是什么?
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据,并提供了丰富的命令。Redis支持存储的类型非常丰富,常用的包括string、list、set、zset和hash等类型,还有bitmaps和hyperloglogs。而且redis还提供了两种持久化功能aof和rdb。为数据的安全性提供了可靠的方案。Redis提供了多种集群方式,主从模式、哨兵模式、clustor模式等。
2、Redis的诞生
Merzia的创始人Salvatore Sanfilippo不满意基于mysql的网站的实时统计系统lloogg,为了提高性能,09年开发了Redis。
3、Redis的特点
- C语言开发,基于内存存储,吞吐量高
- 支持两种持久化方式AOF、RDB
- 提供丰富的数据类型。
- 支持丰富的客户端调用语言API
- 支持主从、哨兵和clustor等多种集群模式
- 可作为消息队列使用
- 包含像setnx、incrby的原子性特性。
4、Redis使用场景
热点数据缓存,热点数据访问是业务压力的主要来源,可利用redis访问数据快,丰富的存储类型等特点,实现特点数据的存储。另外可以给热点数据做一个过期时间,防止长期占用内存。
限时业务的运用,可以利用redis的定时过期删除的特性,实现一些手机验证码、限时优惠的活动信息、有时间限制的内容投放业务等场景。
计数器,redis有一个incrby的命令,可以实现原子性的递增。所以在高并发的活动场景、分布式的序列号生成、限制手机号发送短信数量、接口调用次数等等场景。
排行榜,借助Redis的zsort的顺序不重复存储的特性,可以进行排行数据的存储。比如对世界杯竞猜积分,每个人猜1次,对了+1分,错了+0分,展示得分最高的前一百名。建立一个zset,给每个人建立一个分数和用户ID,通过使用zincrby对每个用户的分数+1。最后通过zrangebyscore命令获取当前用户的排行榜竞猜排行。
分布式锁,这个主要是使用setnx命令的一次性写入不可修改的特性来实现的。当然这个setnx设置完之后