Redis应用场景
redis有哪些好处?
1 速度快,因为数据存在内存中,类似HashMap。redis使用C语言实现的,一般来说C语言实现的程序距离操作系统更近,执行速度相对会更快。Redis使用了单线程构造,预防了多线程可能产生的竞争问题。
2 支持数据类型丰富 string,list,set,sorted set,hash。
3 简单稳定 源码少,单线程,不需要依赖于操作系统中的类库
4 支持事物 操作都是原子性
5 丰富的特性:提供了键过期功能,可以用来实现缓存;提供发布订阅功能,可以用来实现消息系统;提供简单事物功能,在一定程度上保证事物特性;提供流水线功能,这样客户端能将一批命令一次性传到redis,减少网络开销。
6 客户端语言多,几乎涵盖主流编程语言
7 持久化
8 主从复制
9 高可用和分布式
redis应用场景
1 缓存热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,毕竟强大到冒泡的QPS和极强的稳定性不是所有类似工具都有的,而且相比于memcached还提供了丰富的数据类型可以使用,另外,内存中的数据也提供了AOF和RDB等持久化机制可以选择,要冷、热的还是忽冷忽热的都可选。
2 诸如统计点击数等应用。由于单线程,可以避免并发问题,保证不会出错,而且100%毫秒级性能!
3 相当于消息系统,ActiveMQ,RocketMQ等工具类似,简单用一下还行,如果对于数据一致性要求高的话还是用RocketMQ等专业系统。
4 位操作(大数据处理)
用于数据量上亿的场景下,例如几亿用户系统的签到,去重登录次数统计,某用户是否在线状态等等。
5 分布式锁与单线程机制
验证前端的重复请求(可以自由扩展类似情况),可以通过redis进行过滤:每次请求将request Ip、参数、接口等hash作为key存储redis(幂等性请求),设置多长时间有效期,然后下次请求过来的时候先在redis中检索有没有这个key,进而验证是不是一定时间内过来的重复提交
秒杀系统,基于redis是单线程特征,防止出现数据库“爆破”
全局增量ID生成,类似“秒杀”
6 最新列表
例如新闻列表页面最新的新闻列表,如果总数量很大的情况下,尽量不要使用select a from A limit 10这种low货,尝试redis的 LPUSH命令构建List,一个个顺序都塞进去就可以啦。不过万一内存清掉了咋办?也简单,查询不到存储key的话,用mysql查询并且初始化一个List到redis中就好了。
7 排行榜
谁得分高谁排名往上。命令:ZADD(有续集,sorted set)
8 消息队列
提供了发布订阅功能和阻塞队列功能,虽然和专业的队列比还不够强大,但对于一般消息队列功能基本可以满足
9 社交网络
赞/踩、粉丝、共同好友/喜好‘推送、下拉刷新等社交网络必备功能
参考:
https://blog.csdn.net/m0_37450089/article/details/78740692
https://www.cnblogs.com/NiceCui/p/7794659.html
https://www.cnblogs.com/xiaoxi/p/7007695.html