Redis问题收集

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis问题收集

1. Redis 有哪些数据结构?


字符串 String、字典 Hash、列表 List、集合 Set、有序集合 SortedSet。

如果你是 Redis 中高级用户,还需要加上下面几种数据结构 HyperLogLog、Geo、Pub/Sub。

如果你说还玩过 Redis Module,像 BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。


2. Redis 为什么是单线程的?


因为 CPU 不是 Redis 的瓶颈。Redis 的瓶颈最有可能是机器内存或者网络带宽。(以上主要来自官方 FAQ)既然单线程容易实现,而且 CPU 不会成为瓶颈,那就顺理成章地采用单线程的方案了。关于 redis 的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求,


3. 使用 Redis 有哪些好处?


(1) 速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是 O (1)

(2) 支持丰富数据类型,支持 string,list,set,sorted set,hash

(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行

(4) 丰富的特性:可用于缓存,消息,按 key 设置过期时间,过期后将会自动删除


4. Redis 相比 memcached 有哪些优势?


(1) memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类型

(2) redis 的速度比 memcached 快很多

(3) redis 可以持久化其数据

(4) Redis 支持数据的备份,即 master-slave 模式的数据备份。

(5) 使用底层模型不同

它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。

Redis 直接自己构建了 VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

(6)value 大小:redis 最大可以达到 1GB,而 memcache 只有 1MB


5.使用过 Redis 分布式锁么,它是什么回事?


先拿 setnx 来争抢锁,抢到之后,再用 expire 给锁加一个过期时间防止锁忘记了释放。


如果在 setnx 之后执行 expire 之前进程意外 crash 或者要重启维护了,那会怎么样?

这时候你要给予惊讶的反馈:唉,是喔,这个锁就永远得不到释放了。紧接着你需要抓一抓自己得脑袋,故作思考片刻,好像接下来的结果是你主动思考出来的,然后回答:我记得 set 指令有非常复杂的参数,这个应该是可以同时把 setnx 和 expire 合成一条指令来用的!


6. Redis 如何做持久化的?


bgsave 做镜像全量持久化,aof 做增量持久化。因为 bgsave 会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要 aof 来配合使用。参考www.wityx.com,在 redis 实例重启时,会使用 bgsave 持久化文件重新构建内存,再使用 aof 重放近期的操作指令来实现完整恢复重启之前的状态。


对方追问那如果突然机器掉电会怎样?


取决于 aof 日志 sync 属性的配置,如果不要求性能,在每条写指令时都 sync 一下磁盘,就不会丢失数据。但是在高性能的要求下每次都 sync 是不现实的,一般都使用定时 sync,比如 1s1 次,这个时候最多就会丢失 1s 的数据。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
打赏
0
0
0
0
120
分享
相关文章
【Azure Redis 缓存】Redis 连接失败
【Azure Redis 缓存】Redis 连接失败
Redis取最近10条记录
Redis取最近10条记录
83 0
|
10月前
|
【Redis】Redis6.0 新功能
【Redis】Redis6.0 新功能
137 0
【Redis】Redis6.0 新功能
1分钟快速实现Redis数据对比
通过NineData可以快速、高效完成Redis差异数据对比。NineData提供了配置简单、高效和安全的数据对比服务,能在1分钟内完成800万个key的数据对比,并生成详细的对比报告。与传统对比方式相比,NineData具有简单易用、强劲性能、完善的功能和可视化界面等优势。此外,NineData还支持多种数据库的结构和数据对比,并拥有丰富的数据源支持和动态监测功能,以确保数据的质量和稳定性。
228 2
1分钟快速实现Redis数据对比
|
10月前
|
Redis系列-4.Redis持久化(上)
Redis系列-4.Redis持久化
98 0
Redis系列-4.Redis持久化(下)
Redis系列-4.Redis持久化
99 0
Redis 从入门到精通之Redis数据排序
Redis支持对List、Set和Sorted Set元素进行排序,排序命令是`SORT`。`SORT`命令可以根据指定的排序规则对列表、集合或有序集合的元素进行排序,并返回排序后的元素列表或子集。使用Jedis和RedisTemplate分别实现Redis列表、集合和有序集合排序操作的示例代码
1260 17
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等