Redis的应用场景-Redis(二)

一、Redis的各种数据类型都有哪些应用场景呢?

​ 上一章已经写了Redis的五种基本数据类型的常用命令,那么这五种数据类型在哪些场景应用呢?

(1)String(字符串的应用场景)

  • 单值缓存

​ set key value

​ get key

  • 对象缓存

​ set user:001 value(json数据)

​ mset user:001:name zhangsan user:001:age 18

  • 共享session

​ session保存在服务器端,分布式服务下,由于服务器较多,session在多个服务器之间需要共享。

​ 实现方式:spring session + redis实现session共享

  • 分布式锁

​ 服务器A和服务器B同时获取锁,如下:

​ SETNX order:1001 true // 服务器A获取锁,返回值为1

​ SETNX order:1001 true // 服务器B获取锁失败,返回值为0

​ 。。。执行业务操作

​ DEL order:1001 // 执行完业务后释放锁

  • 计数器

​ 例如公众号的文章阅读量。

​ INCR article:readcount:{文章id}

​ GET article:readcount:{文章id}

  • 分布式系统全局序列号

​ INCRBY goodsId 1000 // redis批量生成序列号

(2)Hash(哈希的应用场景)

  • 缓存对象信息

​ 电商购物车为例:

  1. key为cart:用户id
  2. field为商品id
  3. value为商品数量

在这里插入图片描述

  • 购物车操作
    1. 添加商品 hset cart:1001 10025 1
    2. 删除商品 hdel cart:1001 10025
    3. 增加商品购买数量 hincrby cart:1001 10025 1
    4. 商品总数 hlen cart:1001
    5. 获取所有商品 hgetall cart:1001

(3)List(列表的应用场景)

  • 消息队列(后进先出,Stack栈形式的应用)

例如:微信公众号

在这里插入图片描述

解析:比如关注了新华网和Java面试那些事儿

  • 当新华网发文章,文章ID为20001

​ lpush 前缀:用户ID 文章ID

​ lpush msg:1001 20001

  • 当Java面试那些事儿过会也发了一篇文章,文章ID为20005

​ lpush msg:1001 20005

  • 用户1001查看自己的订阅号消息

​ LRANGE key start stop // 返回列表key中指定区间内的元素,区间以偏移量start和stop指定

​ lrange msg:1001 0 10

这样就完成了简化形式的消息列表,真实的订阅号消息列表指定比上述方法更复杂,这里只是针对List(列表的应用场景)做一个举例。

(4)set(集合的应用场景)

应用场景:微信的点赞,收藏,共同关注的人和可能认识的人

(1)点赞

  • 点赞

SADD key value
SADD {前缀}:{消息ID} {用户ID} SADD like:2001 1001

  • 取消点赞

SREM like:2001 1001

  • 检查是否有点赞

SISMEMBER like:2001 1001

  • 获取点赞列表

SMEMBERS like:2001 1001

  • 获取点赞数

SCARD like:2001 1001

(2)收藏

  • 收藏

SADD {前缀}:{用户ID} {文章ID}

SADD collection:1001 3001

  • 取消收藏

SREM collection:1001 3001

(3)共同关注的人和可能认识的人(以三国人物名举例)

liubeiset->{zhugeliang,guanyu,zhagnfei,zhaoyun}

caocaoset->{zhugeliang,guanyu,guojia}

sunquanset->{zhugeliang,zhaoyun,zhouyu}

  • 刘备和曹操共同关注的人

SINTER解释:集合的交集。

SINTER liubeiset caocaoset ->{zhugeliang,guanyu}

  • 刘备可能认识的人

SDIFF解释:Sdiff 命令返回第一个集合与其他集合之间的差异,也可以认为说第一个集合中独有的元素。

SDIFF caocaoset liubeiset ->{guojia}

(5)zset(有序集合的应用场景)

  • 排行榜
    在这里插入图片描述
    (1)点击某条新闻

ZINCRBY key increment member //为有序集合key中元素member的分值加上increment

ZINCRBY hotsearch:20221101 1 梦天实验舱与空间站对接瞬间

(2)查询排行榜前20

ZRANGE key start stop [WITHSCORES] //正序获取有序集合key从start下标到stop下标的元素

ZREVRANGE hotsearch:20221101 0 19 WITHSCORES
INCRBY hotsearch:20221101 1 梦天实验舱与空间站对接瞬间

(2)查询排行榜前20

ZRANGE key start stop [WITHSCORES] //正序获取有序集合key从start下标到stop下标的元素

ZREVRANGE hotsearch:20221101 0 19 WITHSCORES

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧之-猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值