会会大厂面试官三-----Redis【5大基本数据类型应用场景】考核趋势

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 会会大厂面试官三-----Redis【5大基本数据类型应用场景】考核趋势

一、redis面试复盘


1.redis6.0.8【linux】

2.redis的5大数据类型的落地应用

3.你知道分布式锁吗?有哪些实现方案?删除key又什么问题?

4.谈谈你对redis缓存国企淘汰策略?

5.redis的LRU算法简介?

6.生产上redis内存配置多大?快满了怎么办?


1.1 查看redis版本,五大数据类型


1.redis-server -V

2.redis客户端info

String list hash set zset

bitmap

HyperLogLog

GEO

Stream


1.1.1 Redis-String


image.png


EX:key在多少秒之后过期

PX:key在多少毫秒之后过期

NX:当key不存在的时候,才创建爱你key,效果等同于setnx

XX:当key存在的时候,覆盖key


20210203135255784.png

1.1.2 Redis-Hash类型

20210203143503460.png


对应java中的数据结构为Map<String,map<k,v>>


20210203143658791.png


1.1.3 Redis-List类型


127.0.0.1:6379>lpush list01 1 2 3 4 5 6 
127.0.0.1:6379>lrange list01 0 -1


1.1.4 Redis-Set类型


image.png


127.0.0.1:6379>sadd set  1 1 1 2 3 4 5
127.0.0.1:6379>smembers set1 
127.0.0.1:6379>spop set1 3  # 弹出3个


1.1.5 Redis-Zset


20210203155048540.png

zadd zset1 100 movie1 20 movie2


1.2 数据类型用在哪里,应用场景是什么?


商品编号、订单号采用INCR命令生成。【INCR数值增减】


20210203143026748.png


早期的购物车。【Hash】


新增商品:hset shopcar:uid 1024 3344
 新增商品:hset shopcar:uid 1024 334477 1
 增加商品数量:hincrby shopcar:uid 1024 334477 1
 商品总数:hlen shopcar:uid 1024
 全部选择:hgetall shopcar:uid 1024


20210203145150681.png


微信公众号订阅栏目。【List】

# 作者们一旦发布新文章,就会安装进自己的List  
127.0.0.1:6379>lpush likeauthor:uid1024 11 22
# 查看自己喜欢的全部文章,遍历文章
127.0.0.1:6379>lrange likeauthor:uid1024 0 -1

20210203150938551.png


微信抽奖小程序。【Set】

微信朋友圈点赞

微博好友关注社交关系

QQ内推可能认识的人

20210203152513552.png

# 微信抽奖
# 3个用户点击立即参与choujiang
127.0.0.1:6379>sadd shoujiang:1010  1 2 3 
# 查看多少人参与抽奖
127.0.0.1:6379>scard choujiang:1010
# 选出中奖的人 并删除
127.0.0.1:6379>smembers set1 
127.0.0.1:6379>spop set1 3  # 弹出3个作为中奖


20210203153351893.png

# 朋友圈点赞就加到set集合里
127.0.0.1:6379>sadd pub:msgID 点赞用户ID1 点赞用户ID2
# 取消点赞
127.0.0.1:6379>srem pub:msgID 点赞用户ID
# 展现所有点赞的ID
127.0.0.1:6379>smembers pub:msgID
# 点赞数统计
127.0.0.1:6379>scard pub:msgID
# 判断某个朋友是否点赞过
127.0.0.1:6379>sismember pub:msgID 用户ID

20210203153922286.png

# 微博共同关注,社交关系
127.0.0.1:6379>sadd s1 1 2 3 4 5 
127.0.0.1:6379>sadd s1 1 2 3 4 5 6 7 8 9 
# 取交集
127.0.0.1:6379>sinter s1 s2

20210203154736321.png

# QQ可能认识的人【电商直播推荐,带货 比较合适也】
127.0.0.1:6379>sadd s1 1 2 3 4 5 
127.0.0.1:6379>sadd s1 1 2 3 4 5 6 7 8 9 
# 取差集
127.0.0.1:6379>sdiff s1 s2

商品销售排行。【Sort Zset】

抖音热搜。

例:key 为goods:sellsort,分数为销售数量

# 商品编号1001的销量为9,1002销量为15
127.0.0.1:6379>zadd goods:sellsort 9 1001 15 1002 
# 又有一个顾客买了2件1001
127.0.0.1:6379>zincrby goods:sellsort 2 1001
# 求商品销量前10名
127.0.0.1:6379>zrange goods:sellsort 0 10 withscores
结果:
1) "1001"
2) "11"
3) "1002"
4) "15"

20210203160035227.png

# 点击视频
127.0.0.1:6379>zincrby hotvcr:20200919 1 八佰
127.0.0.1:6379>zincrby hotvcr:20200919 1 八佰 2 花木兰
# 展示当日排行前10
127.0.0.1:6379>zrange hotvrc:20200919 0 9 withscores


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
5天前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
121 85
|
1月前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
|
21天前
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
35 5
|
1月前
|
存储 NoSQL 算法
阿里面试:亿级 redis 排行榜,如何设计?
本文由40岁老架构师尼恩撰写,针对近期读者在一线互联网企业面试中遇到的高频面试题进行系统化梳理,如使用ZSET排序统计、亿级用户排行榜设计等。文章详细介绍了Redis的四大统计(基数统计、二值统计、排序统计、聚合统计)原理和应用场景,重点讲解了Redis有序集合(Sorted Set)的使用方法和命令,以及如何设计社交点赞系统和游戏玩家排行榜。此外,还探讨了超高并发下Redis热key分治原理、亿级用户排行榜的范围分片设计、Redis Cluster集群持久化方式等内容。文章最后提供了大量面试真题和解决方案,帮助读者提升技术实力,顺利通过面试。
|
1月前
|
存储 NoSQL 算法
面试官:Redis 大 key 多 key,你要怎么拆分?
本文介绍了在Redis中处理大key和多key的几种策略,包括将大value拆分成多个key-value对、对包含大量元素的数据结构进行分桶处理、通过Hash结构减少key数量,以及如何合理拆分大Bitmap或布隆过滤器以提高效率和减少内存占用。这些方法有助于优化Redis性能,特别是在数据量庞大的场景下。
面试官:Redis 大 key 多 key,你要怎么拆分?
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
61 4
|
1月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
41 1
|
2月前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
45 1
|
2月前
|
NoSQL Java API
美团面试:Redis锁如何续期?Redis锁超时,任务没完怎么办?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试一线互联网企业时遇到了关于Redis分布式锁过期及自动续期的问题。尼恩对此进行了系统化的梳理,介绍了两种核心解决方案:一是通过增加版本号实现乐观锁,二是利用watch dog自动续期机制。后者通过后台线程定期检查锁的状态并在必要时延长锁的过期时间,确保锁不会因超时而意外释放。尼恩还分享了详细的代码实现和原理分析,帮助读者深入理解并掌握这些技术点,以便在面试中自信应对相关问题。更多技术细节和面试准备资料可在尼恩的技术文章和《尼恩Java面试宝典》中获取。
美团面试:Redis锁如何续期?Redis锁超时,任务没完怎么办?
|
1月前
|
存储 NoSQL Redis
Redis常见面试题:ZSet底层数据结构,SDS、压缩列表ZipList、跳表SkipList
String类型底层数据结构,List类型全面解析,ZSet底层数据结构;简单动态字符串SDS、压缩列表ZipList、哈希表、跳表SkipList、整数数组IntSet