Redis数据结构应用场景及原理分析

目录

一、Redis介绍

二、应用场景 

2.1 String应用场景 

2.2 Hash应用场景  

2.3 List应用场景

2.4 Set应用场景 

2.5 Zset应用场景 


一、Redis介绍

  • 单线程
  • 多路复用
  • 底层数据结构:全局哈希表(key-value)

二、应用场景 

2.1 String应用场景 

  • 单值缓存

set key value

get key 

  • 对象缓存

set user:1 userJson(Json格式数据)

  • 分布式锁

set product:1 true ex 10 nx  

  • 计数器

incr article:readCount:1

get article:readCount:1

  • 分布式系统全局序列号

incrby orderId 100   // redis批量生成序列号提升性能

2.2 Hash应用场景  

  • 对象存储 

hmset user 1:name zhangsan 1:blance 10000

hmset user 1:name zhangsan 1:blance 9000

hmget user 1:name 1:blance 

  • 购物车

以用户ID为key,商品ID为filed,商品数量为value

添加购物车->hset cart:1 1001 1

增加数量->hincrby cart:1 1001 1

商品总数->hlen cart:1 1001

删除商品->hdel cart:1 1001

购物车列表->hgetall cart:1

2.3 List应用场景

  • 常用分布式数据结构

stack(栈)= lpush+lpop

queue(对列)= lpush+rpop

blocking mq(阻塞队列)= lpush+brpop 

  • 消息流

张三关注了李四、王五等大V

李四发微博,消息(ID:1001):lpush msg:zhangsan 1001 

王五发微博,消息(ID:1002):lpush msg:zhangsan 1002

张三查看最新微博消息:lrange msg:zhangsan 0 4

如果李四、王五粉丝数量千万级别,如何处理?

2.4 Set应用场景 

  • 微信小程序抽奖 

点击参与抽奖加入集合:sadd 1001(活动ID)1(用户ID)

查看参与抽奖者:smembers 1001

抽取中奖者:

随机抽取2名(不删除集合中元素):srandmember 1001 2

随机抽取2名(删除集合中元素):spop 1001 2

  • 微信微博点赞、收藏、标签

 

点赞:sadd like:1001(消息ID) 1(用户ID)

取消点赞:srem like:1001 1

获取点赞用户列表:smembers like:1001

检查用户是否点赞:sismember like:1001 1

获取点赞用户数:scard like:1001 

  • 集合操作 

交集:sinter set1 set2 set3 -> {c}

并集:sunion set1 set2 set3 -> {a,b,c,d,e}

差集:sdiff set1 set2 set3 -> {a} 

  • 集合操作实现微博微信关注模型 

zhangsan关注的人:zhangsanSet->{lisi,wangwu} 

lisi关注的人:lisiSet->{zhangsan,wangwu,zhaoliu,liuqi} 

wangwu关注的人:wangwuSet->{zhangsan,lisi,zhaoliu}

zhangsan和lisi共同关注的人(zhangsan和lisi的交集):sinter zhangsanSet:lisiSet->{wangwu}

zhangsan关注的人也关注了lisi:sismember zhangsanSet lisiSet

zhangsan可能认识的人(zhangsan和lisi的差集):sdiff zhangsanSet liset->{zhaoliu,liuqi}

2.5 Zset应用场景 

  • 排行榜 

获取新闻:zincrby hotNews:20230801 1 总理记着会

获取当日排行榜前十:zrevrange hotNews:20230801 0 9 WITHSCORES

七日搜索榜单计算:zunionstore hotNews:20230801-20230807 7

展示七日排行前十:zrevrang hotNews:20230801-20230807 0 9 WITHSCORES

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值