大家好!我是andy哥,有8年java
开发和2年微服务架构开发经验的开发者。今天我要介绍的是redis,redis是我们在微服务中使用比较多的一种缓存中间件。
redis有哪些应用场景呢?大家思考一下
下面列出我常用或了解的应用场景:
-
redis用作缓存,她可以看做是一个内存数据库。一些读多写少的数据放置其中,可以减少数据库频繁访问读取的压力。内存肯定比磁盘io速度要快
-
redis分布式锁。众所周知,分布式应用场景无法保证数据安全问题,分布式锁有常见方案:基于mysql的分布式锁,基于zookeeper分布式锁,基于redis的分布式锁,基于redis分布式锁一般用得最多。主要基于setnx expire
-
分布式计数器 基于incr原理 每次访问不断累加,可以统计网站访问量,阅读量,点击量
-
分布式限流 基于incr和expire原理 通过累计单位时间请求次数达到限流
-
位统计 打卡和留存统计
6.全局ID 基于incr原理
7.发布订阅 类似若消息队列,没有ack机制可能存在消息丢失
8.购物车 基于redis hash数据结构 用户id作为key, 商品id作为field
9.分布式回话 基于redis string的数据结构
10.geo 实现附近人,摇一摇功能
12.排行 基于zset数据结构
13.阻塞消息队列
14.redis实现乐观锁 基于watch
15.hyperlog基数统计 统计用户uv,统计访问ip数(可以实现和bitmap类似的功能更省空间)
16.sadd 实现点赞、签到、like等功能
17.实现列表一对多
18.抽奖 set实现抽奖
19.sadd 关注和推荐
20.list结构 双向链表