腾讯课堂Redis简单学习

1.redis核心数据结构

redis核心数据结构有5种:string,hash,zset,list,set
在这里插入图片描述

2.应用场景

String应用场景

单值缓存,对象缓存:利用JSON强大的兼容性、可读性和易用性,将对象转换为JSON字符串,再存储在string类型中,是个不错的选择,如用户信息、商品信息等。
分布式锁:Redis 是单线程,多路复用方式提高处理效率。我们可以借助中间件Redis的setnx()命令实现分布式锁。setnx()命令只会对不存在的key设值,返回1代表获取锁成功。对存在的key设值,会返回0代表获取锁失败。
计数器:string类型的incr和decr命令的作用是将key中储存的数字值加一/减一,这两个操作具有原子性,总能安全地进行加减操作,因此可以用string类型进行计数,如微博的评论数、点赞数、分享数,抖音作品的收藏数,京东商品的销售量、评价数等。
除此外还有web集群session共享,分布式系统全局序列号等…

hash应用场景

对象缓存:同上
电商购物车
举例:(用户id为key,商品id为field,商品数量为value)
购物车的操作:
1)添加商品
格式:hset key field value—>hset car1:1001 1234 1
2)增加数量
格式:hincrby key field increment—>hincrby car1:1001 1234 1
3)商品总数
格式:hlen key—>hlen car1:1001
4)删除商品
格式:hdel key field [field …]—>hdel car1:1001 1234
5)获取购物车所有商品
格式:hgetall key—>hgetall car1:1001

list应用场景

list类型是简单的字符串列表,按照插入顺序排序。每个列表最多可以存储 232 - 1 个元素(40多亿)。
实现常用的数据结构(栈,队列)
Stack(栈)—>LPUSH+LPOP (FILO)
Queue(队列)—>LPUSH+RPOP(FIFO)
Blocking Queue(阻塞队列)—>LPUSH+BRPOP
除此外还有微博和微信公众号消息流等…

set应用场景

微信点赞,收藏和标签
举例:
1)点赞---->sadd like: {消息id} {用户id}
格式:sadd key member [member …]
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时,返回一个错误。
2)取消点赞------>srem like:{消息id} {用户id}
格式:srem key member [member …]
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。当 key 不是集合类型,返回一个错误。
3)检查用户是否点赞------>sismember like: {消息id} {用户id}
格式:sismember key member
判断 member 元素是否集合 key 的成员。
4)获取点赞的用户列表---->smembers like: {消息id}
格式:smembers key
返回集合 key 中的所有成员。
不存在的 key 被视为空集合。
5)获取点赞用户数------>scard like: {消息id}
格式:scard key
返回集合 key 的基数(集合中元素的数量)。
除了上述点赞之外,还有微信抽奖小程序,集合操作(微博微信关注模型,共同好友共同关注)等。
在这里插入图片描述

zset应用场景

根据时间排序的新闻列表等, 阅读排行榜
举例:微博热搜
在这里插入图片描述
更多应用场景:
在这里插入图片描述
redis命令参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值