redis面试题4

​面经来源于github上的

Java-Interview

在学习时,用自己的语言解释​

16、Memcache与Redis的区别都有哪些?

存储方式Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。

Redis有部份存在硬盘上,这样能保证数据的持久性。

数据支持类型

Memcache对数据类型支持相对简单。

Redis有丰富的数据类型。

使用底层模型不同

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

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

17、假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?

Puppet 复制代码
使用keys指令可以扫出指定模式的key列表:
keys pre*

这个时候面试官会追问该命令对线上业务有什么影响,直接看下一个问题。

redis 的单线程的。keys 指令会导致线 程阻塞一段时间,线上服务会停顿,直到指令执行完毕,服务才能恢复。这个时 候可以使用 scan 指令,scan 指令可以无阻塞的提取出指定模式的 key 列表,但是会有一定的重复概率,在客户端做一次去重就可以了,但是整体所花费的时间 会比直接用 keys 指令长。

18、如果这个redis正在给线上的业务提供服务,那使用keys指令会有什么问题?

redis 的单线程的。keys 指令会导致线 程阻塞一段时间,线上服务会停顿,直到指令执行完毕,服务才能恢复。这个时 候可以使用 scan 指令,scan 指令可以无阻塞的提取出指定模式的 key 列表,但是会有一定的重复概率,在客户端做一次去重就可以了,但是整体所花费的时间 会比直接用 keys 指令长。

19、如果有大量的key需要设置同一时间过期,一般需要注意什么?

如果大量的key过期时间设置的过于集中,到过期的那个时间点,Redis可能会出现短暂的卡顿现象(因为redis是单线程的)。严重的话可能会导致服务器雪崩,所以我们一般在过期时间上加一个随机值,让过期时间尽量分散。

20、Redis常用的客户端有哪些?

Jedis:是老牌的Redis的Java实现客户端,提供了比较全面的Redis命令的支持。

Redisson:实现了分布式和可扩展的Java数据结构。

Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。

优点:

Jedis:比较全面的提供了Redis的操作特性。

Redisson:促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列。

Lettuce:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操 作单个Lettuce连接来完成各种操作。

相关推荐
xhbaitxl5 分钟前
算法学习day38-动态规划
学习·算法·动态规划
Aliex_git6 分钟前
跨域请求笔记
前端·网络·笔记·学习
tritone6 分钟前
使用阿贝云免费云服务器学习Vagrant,是一次非常顺畅的体验。作为一名开发者
服务器·学习·vagrant
2501_9011478311 分钟前
面试必看:优势洗牌
笔记·学习·算法·面试·职场和发展
李日灐12 分钟前
C++进阶必备:红黑树从 0 到 1: 手撕底层,带你搞懂平衡二叉树的平衡逻辑与黑高检验
开发语言·数据结构·c++·后端·面试·红黑树·自平衡二叉搜索树
星纬智联技术23 分钟前
开源 AI-Eval:Prompt 评估系统,用单元测试跑
经验分享
倔强的石头_25 分钟前
关系数据库替换用金仓:数据迁移过程中的完整性与一致性风险
数据库
zhyf11932 分钟前
AU软件安装详细步骤梳理(win&mac)
经验分享
Elastic 中国社区官方博客32 分钟前
使用 Groq 与 Elasticsearch 进行智能查询
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
一战成名99633 分钟前
深度解析 CANN 模型转换工具链:从 ONNX 到 OM
人工智能·学习·安全·开源