【Redis基础知识 三】Redis五种常用数据结构应用场景(二)

简介: 【Redis基础知识 三】Redis五种常用数据结构应用场景

基本操作

hash的基本操作和string其实类似,只不过在值的指定和设置时多加了一个维度,也就是字段。

当然其也具备类多指令操作,一次修改多个字段值

扩展操作【应用场景】

hash的主要特性是对象存储模式,我们看基于这样的特性,常用的有哪些场景呢?

  • 场景四:利用hash的对象存储特性设置用户的购物车
  • 场景五:hash作为商品秒杀计数对象完成商品秒杀系统

这两个业务场景其实在我们生活中还是很常见到的。可以把hash理解为一个复合的string

场景四:利用hash的对象存储特性设置用户的购物车

一个人的购物车可以看做一个对象,而商品可以当做field,数量可以当做value。然后对购物车进行各种操作,hash基本都能满足:

例如对于一些操作场景:

除了基本操作,我们想要增加商品数量,全选查看等都可以使用如下操作:

当然我们当前只能拿到商品数量和商品,对于商品的详细信息一无所知,这个时候就需要对field做更细粒度的拆分:

此时我们又想到,其实商品的信息是公共的,可以将公共的商品信息维护一个商品的hash,可以避免不同的人重复放置购物车占据大量内存,还是只存商品的编号和数值,需要的时候从公共hash取商品详细信息,同时为了避免重复商品入商品hash,使用setnx实现,这样实现性能最优。

场景五:hash作为商品秒杀计数对象完成商品秒杀系统

可以利用hash多字段的特性,来用一个对象完成整体秒杀系统。

操作规范

hash操作有如下的使用规范,最主要的就是别无限套娃,禁止套娃!

同时我们知道string也能存类hash的字符串,但是不能对其中字段操作,但是查看起来是一个完整格式,所以我们总结:

List类型

list的核心特点是顺序性,主要是其底层实际上是一个双向链表结构:

基本操作

其实由于其双向链表的灵活性,很容易模拟出栈或者队列的模式,因为我们查询时是从左边查询的,所以我们一般的使用策略是,从右边进入,这样从表面上看符合进入顺序的,比较直观【队列】

需要注意的是查询索引:Start 只能为0,stop为-1就是倒数第一个,为-2就是倒数第二个

扩展操作【应用场景】

list的主要特性是顺序性,我们看基于这样的特性,常用的有哪些场景呢?

  • 场景六:利用blpop特性实现任务队列
  • 场景七:利用list顺序特性实现朋友圈点赞
  • 场景八:利用list顺序特性进行分布式日志顺序性展示

我们来看看这三个业务场景。

场景六:利用blpop特性实现任务队列

轮询从任务队列里取数据【可以同时从多个队列获取】,如果取到数据就返回,如果没有数据就等待设置时间持续获取,直到数据过期。

一直等【从若干个列表中去等】,只要有数据就返回来

场景七:利用list顺序特性实现朋友圈点赞

因为点赞等信息都是有顺序性的,而且修改的效率高,适合使用list来操作

取消点赞的时候使用如下命令操作:

场景八:利用list顺序特性进行分布式日志顺序性展示

使用list顺序性实现多路数据汇总展示,利用其栈的特性实现最新的消息最先展示。

操作规范

list主要有如下几种使用规范:

Set类型

因为list的查询效率太低,所以需要新的数据模型来进行支持,Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据

那么为什么我们的值不允许重复呢?,不支持vaule重复录入,因为我们原来hash里的field也不允许重复

基本操作

set的操作相对简单,主要明确一点,set里不会有重复数据

扩展操作【应用场景】

set的主要特性是不重复性,我们看基于这样的特性,常用的有哪些场景呢?

  • 场景九:利用set特性随机获取不重复数据实现简单推荐系统
  • 场景十:利用set交并差实现推荐系统池
  • 场景十一:利用set不重复特征获取所有业务系统权限
  • 场景十二:利用set不重复特征获取UV和IP数据
  • 场景十三:利用set不重复特征实现黑白名单

我们来看看这五个业务场景。

场景九:利用set特性随机获取不重复数据实现简单推荐系统

可以使用如下命令:

相关文章
|
7月前
|
存储 消息中间件 NoSQL
Redis数据结构:别小看这5把“瑞士军刀”,用好了性能飙升!
Redis提供5种基础数据结构及多种高级结构,如String、Hash、List、Set、ZSet,底层通过SDS、跳表等实现高效操作。灵活运用可解决缓存、计数、消息队列、排行榜等问题,结合Bitmap、HyperLogLog、GEO更可应对签到、UV统计、地理位置等场景,是高性能应用的核心利器。
|
7月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
7月前
|
存储 缓存 NoSQL
Redis基础命令与数据结构概览
Redis是一个功能强大的键值存储系统,提供了丰富的数据结构以及相应的操作命令来满足现代应用程序对于高速读写和灵活数据处理的需求。通过掌握这些基础命令,开发者能够高效地对Redis进行操作,实现数据存储和管理的高性能方案。
222 12
|
6月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
648 25
|
6月前
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
1071 3
|
7月前
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
314 1
Redis专题-实战篇二-商户查询缓存
|
7月前
|
缓存 NoSQL 关系型数据库
Redis缓存和分布式锁
Redis 是一种高性能的键值存储系统,广泛用于缓存、消息队列和内存数据库。其典型应用包括缓解关系型数据库压力,通过缓存热点数据提高查询效率,支持高并发访问。此外,Redis 还可用于实现分布式锁,解决分布式系统中的资源竞争问题。文章还探讨了缓存的更新策略、缓存穿透与雪崩的解决方案,以及 Redlock 算法等关键技术。
|
11月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
11月前
|
缓存 NoSQL Java
Redis+Caffeine构建高性能二级缓存
大家好,我是摘星。今天为大家带来的是Redis+Caffeine构建高性能二级缓存,废话不多说直接开始~
1429 0