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

这篇具有很好参考价值的文章主要介绍了Redis数据结构应用场景及原理分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Redis介绍

二、应用场景 

2.1 String应用场景 

2.2 Hash应用场景  

2.3 List应用场景

2.4 Set应用场景 

2.5 Zset应用场景 


一、Redis介绍

Redis数据结构应用场景及原理分析,redis,数据库,缓存

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

Redis数据结构应用场景及原理分析,redis,数据库,缓存

二、应用场景 

2.1 String应用场景 

  • 单值缓存

set key value

get key 

  • 对象缓存

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

  • 分布式锁

set product:1 true ex 10 nx  

  • 计数器

Redis数据结构应用场景及原理分析,redis,数据库,缓存

incr article:readCount:1

get article:readCount:1

  • 分布式系统全局序列号

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

2.2 Hash应用场景  

  • 对象存储 

Redis数据结构应用场景及原理分析,redis,数据库,缓存

hmset user 1:name zhangsan 1:blance 10000

hmset user 1:name zhangsan 1:blance 9000

hmget user 1:name 1:blance 

  • 购物车

Redis数据结构应用场景及原理分析,redis,数据库,缓存

以用户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应用场景

  • 常用分布式数据结构

Redis数据结构应用场景及原理分析,redis,数据库,缓存

stack(栈)= lpush+lpop

queue(对列)= lpush+rpop

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

  • 消息流

Redis数据结构应用场景及原理分析,redis,数据库,缓存

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

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

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

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

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

2.4 Set应用场景 

  • 微信小程序抽奖 

Redis数据结构应用场景及原理分析,redis,数据库,缓存

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

查看参与抽奖者:smembers 1001

抽取中奖者:

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

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

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

 Redis数据结构应用场景及原理分析,redis,数据库,缓存

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

取消点赞:srem like:1001 1

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

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

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

  • 集合操作 

Redis数据结构应用场景及原理分析,redis,数据库,缓存

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

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

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

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

Redis数据结构应用场景及原理分析,redis,数据库,缓存

Redis数据结构应用场景及原理分析,redis,数据库,缓存

Redis数据结构应用场景及原理分析,redis,数据库,缓存

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文章来源地址https://www.toymoban.com/news/detail-687053.html

到了这里,关于Redis数据结构应用场景及原理分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python中List类型数据结构广泛应用于各种场景中。然而,在数据分析和可视化过程中,经常需要将List转换为Pandas的DataFrame对象。那么如何将...

    Python中List类型数据结构广泛应用于各种场景中。然而,在数据分析和可视化过程中,经常需要将List转换为Pandas的DataFrame对象。那么如何将List转换为DataFrame对象呢?本文将介绍如何使用Python中Pandas库将List转换为DataFrame,并进一步将其转换为字符串。 将Python List转换为Pandas D

    2024年02月15日
    浏览(49)
  • 2023-06-01:讲一讲Redis常见数据结构以及使用场景。

    2023-06-01:讲一讲Redis常见数据结构以及使用场景。 答案2023-06-01: 字符串(String) 适合场景 缓存功能 Redis 作为缓存层,MySQL 作为存储层,在大部分请求中,数据的读取通常是从 Redis 中获取。由于 Redis 具有支持高并发的特性,因此缓存层通常能够加速读写操作,并减轻后端

    2024年02月07日
    浏览(61)
  • Redis 常见的几种数据结构说一下?各自的使用场景?

    介绍:string 数据结构是简单的 key-value 类型。 使用场景: 一般常用在需要计数的场景,比如用户的访问次数、热点文章的点赞转发数量等等。 介绍:list 即是 链表 使用场景:发布与订阅或者说消息队列、慢查询。 介绍:hash 类似于 JDK1.8 前的 HashMap,内部实现也差不多(数组

    2024年01月24日
    浏览(42)
  • 数据结构【栈】有哪些应用场景?

    ✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏: C语言 🤪、 Cpp 😶‍🌫️、 数据结构初阶 💀 💽座右铭:“ 記住,每一天都是一個新的開始😁😁😁 ” 💀本章内容: 《栈》的介绍✨ 本章会介绍 栈的特性 以及栈的初始化、销毁、插入、删除、取栈顶元素等… 那么栈的

    2024年02月08日
    浏览(47)
  • 【数据结构】 栈(Stack)的应用场景

    栈(Stack)又名堆栈,作为一个== 先进后出== 的数据结构。 它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使

    2024年02月11日
    浏览(39)
  • Redis常用数据结构及原理

    Redis 支持多种数据类型,每种类型都具有不同的特性和用途。以下是 Redis 中常见的数据类型: 1、基本介绍 字符串是最基本的数据类型,可以存储任意类型的数据,如文本、数字或序列化对象。可以使用字符串相关的命令对其进行操作,如 设置值(SET)、获取值(GET)、增

    2024年02月16日
    浏览(86)
  • redis数据结构以及性能原理

    redis数据类型 String hash list set zset 各个数据类型使用场景 String:token,标识等的存储 hash:对象存储 list:栈(FILO-先进后出),队列:(FIFO-先进先出),阻塞队列等 set:关系网,点赞 zset:排行,时间段时间内排行汇总 redis单线程高可用 单线程指当在执行命令时是按照单线程去

    2024年02月08日
    浏览(50)
  • 深入理解数据结构:队列的实现及其应用场景

    队列(Queue)是一种具有先进先出(FIFO)特性的数据结构。在队列中,数据的插入和删除操作分别在队列的两端进行。插入操作在队列的尾部进行,而删除操作则在队列的头部进行。这种特性使得队列在很多实际应用中非常有用,比如任务调度、缓冲区管理等。 线性表是一种

    2024年04月28日
    浏览(51)
  • 【redis】redis的5种数据结构及其底层实现原理

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(无序集合)及zset(有序集合)。 在秒杀项目里,我用过redis的Set和Hash结构: String:一个 key 对应一个字符串,string是Redis 最基本的数据类型。(字节的abase框架只实现了redis的string数据结构,导致我们如

    2024年02月09日
    浏览(72)
  • 深度剖析Redis九种数据结构实现原理,建议收藏

    Redis 是一个高性能的键值存储系统,支持多种数据结构。 包含五种基本类型 String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),和三种特殊类型 Geo(地理位置)、HyperLogLog(基数统计)、Bitmaps(位图)。 每种数据结构都是为了解决特定问题而设计

    2023年04月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包