Redis适用的业务场景

Redis基础适用业务场景

总结:
在这里插入图片描述
本质:底层使用C语言开发

注意:业务逻辑不要放到redis处理
详细命令参照:这哥们写的不错

String

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

hash

购物车:
商家id为key
商品id为field
参与商品数量为value

string讲究整体性,适合读,hash讲究个性,适合更新操作

List:

需求:存储多个数据,并对数据进入存储空间的顺序进行区分
存储结构:一个存储空间保存多个数据,并且通过数据可以体现进入顺序
list类型:保存多个数据,底层使用双向链表存储结构实现

规定时间内获取并移除数据

业务场景:
应用于具有操作先后顺序的数据控制
微信朋友圈点赞,按要求显示点赞数据
twitter、新浪微博、等个人用户的关注顺序惊醒展示,粉丝列表需要将最近关注的粉丝列在前面
按时间排列的新闻和活动,最新消息的展示如(QQ消息)
企业运营产生的大量运营数据

set

存储大量数据,在查询方面提供更高的效率
在这里插入图片描述

业务场景
随机获取指定数量数据,或随机将某个数据移除集合
抖音已关注几类感兴趣内容,如何随街机用户推送其它类内容
随机推荐类信息检索,如:热歌歌单推荐,热点新闻推荐,热卖旅游路线推荐,应用app,抽奖? 大V推荐

数据交际并集差集
如:脉脉的共同好友好友推荐
QQ/微博新用户交际圈小,关注的热点少,如何增大用户的朋友圈,提高用户关注话题/他人总量
同类信息的关联搜索,二度信息关联搜索,深度关联搜索
由用户A出发,获取到好友用户B的好友信息列标(一度)
由用户A出发,获取到好友用户B的购物清单列标(二度)
由用户A出发,获取到好友用户B的游戏重回走列表(二度)

set同类型相同数据的合并
例:想要A用户拥有B和C用户拥有的所有权限
同类型数据快速去重
黑白名单的建立和服务控制

**

sorted_set

根据自身特征进行排序,在set的存储结构基础上添加可排序字段
在这里插入图片描述
集合的交 并操作
计数器组合排序功能对应的排名
基于时间线的先定任务处理
如网盘VIP
定时任务执行顺序管理或任务过期管理

### Redis 在不同业务场景中的应用 #### 场景一:缓存加速读取性能 为了提高应用程序的响应速度并减少数据库负载,Redis 可作为高效的缓存层。通过存储频繁访问的数据副本到内存中,能够显著降低延迟并提升吞吐量。 ```java // Java代码示例:使用Spring Data Redis实现简单的键值对操作 @Autowired private ValueOperations<String, String> valueOperations; public void setCache(String key, String value){ valueOperations.set(key,value); } public String getFromCache(String key){ return valueOperations.get(key); } ``` 当遇到高并发读写需求时,合理配置TTL(Time To Live),防止缓存穿透等问题发生[^1]。 #### 场景二:消息队列与异步任务分发 利用Redis列表(List)结构模拟先进先出(FIFO)的消息队列机制;或者采用发布/订阅(Pub/Sub)模型实现实时通知推送等功能。对于大规模在线交易系统而言,在下单高峰期可以考虑将订单创建逻辑放入后台执行以缓解前端服务器压力。 ```bash LPUSH queue_name "task_data" BRPOP queue_name 0 PUBLISH channel message_content SUBSCRIBE channel ``` 这种方式不仅有助于解耦前后端模块之间的依赖关系,同时也便于后续扩展维护工作[^2]。 #### 场景三:分布式锁控制资源竞争 针对电商促销活动中可能出现的商品超卖现象,借助于Redis原子命令SETNX(set if not exists),配合EXPIRE设置有效期限来构建简易版分布式互斥锁解决方案。确保同一时刻只有一个客户端能够获取指定商品库存更新权限,从而保障数据一致性。 ```lua local result = redis.call("SET",KEYS[1],"locked","NX","PX",ARGV[1]) if(result ~= nil) then return 1; else return 0; end ``` 此方法特别适用于限时抢购、秒杀等特殊营销场合下的防刷单措施实施[^3]。 #### 场景四:计数器统计分析 凭借其内置INCR/DECR指令快速完成整数值加减运算的特点,非常适合用来记录网站UV/PV指标变化趋势或是社交平台点赞收藏次数累积情况。此外还可以结合BITCOUNT位图函数计算特定日期范围内活跃用户数量分布特征。 ```ruby redis.incr('page_view_counter') redis.decr('stock_quantity') # 记录某天内有多少独立IP访问过站点 redis.sadd('unique_visitors:'..os.date('%Y-%m-%d'), client_ip) # 统计过去7天每天新增注册人数 for i=1,7 do local day=os.date("%Y%m%d", os.time()-86400*(i-1)) print(redis.bitcount(day)) end ``` 综上所述,由于具备高性能读写效率以及丰富的数据类型支持能力,使得Redis成为众多互联网企业不可或缺的技术组件之一[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值