关于redis-cluster:2022最新版-Redis大厂面试题总结附答案
专一于PHP、MySQL、Linux和前端开发,感兴趣的感激点个关注哟!!!文章已收录,次要蕴含的技术有PHP、Redis、MySQL、JavaScript、HTML&CSS、Linux、Java、Golang、Linux和工具资源等相干理论知识、面试题和实战内容。文章导语大家好,前段时间始终在忙找工作相干的事件。最近工作稳固了,于是把面试过程中遇到的Redis相干常识问题总结下来,心愿可能对大家面试、学习有所帮忙。本文重点分享数据类型,其余内容后续章节分享,也能够点击上方收录链接。 本系列面试题会从意识Redis、Redis几大数据类型、常见的应用场景和解决方案、Redis主从复制、Redis哨兵、Redis集群等相干知识点进行总结。不仅仅单纯的从文字方面终结,还会带有更多的图文方面,尽可能的让大家深刻的学习。 同时我也筹备了一份汇总纲要,绝对文字来说更加的清晰、明了。须要的小伙伴也能够回复Redis面试纲要。同时该系列问题也会一直的欠缺、更新。让大家学习到更多的常识。 意识RedisREmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的应用 ANSI C 语言编写、恪守 BSD 协定、反对网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis的数据类型都有哪些有五种根本数据类型,别离是string、hash、list、有序汇合(zset)、汇合(set)。在5.0之后减少了一种Stream类型。额定的有GEO、HyperLogLog、BitMap。Redis应用的场景有哪些数据缓存(用户信息、商品数量、文章浏览数量)音讯推送(站点的订阅)队列(削峰、解耦、异步)排行榜(积分排行)社交网络(独特好友、互踩、下拉刷新)计数器(商品库存,站点在线人数、文章浏览、点赞)基数计算GEO计算Redis性能特点都有哪些长久化丰盛的数据类型(string、list、hash、set、zset、公布订阅等)高可用计划(哨兵、集群、主从)事务丰盛的客户端提供事务音讯公布订阅GeoHyperLogLog事务分布式事务锁Redis如何实现分布式锁Redis能够应用setnx key value + expire key expire_time来实现分布式锁。失常状况下,下面的命令是没有问题的。当Redis出现异常的状况下,很容易呈现非原子性操作。非原子性操作指的的setnx命令执行胜利,然而expire没有执行胜利,此时key就成为了一个无过期工夫的key,始终保留在Redis中,导致其余的申请就无奈执行。要解决该问题,能够应用lua脚本实现。通过lua实现命令的原子性操作。 在Redis中应用set命令,加参数也能够实现分布式锁。set key vale nx ex|px ttl<!-- tabs:start --> 通过数组定义--- getLock keylocal key = KEYS[1]local requestId = KEYS[2]local ttl = tonumber(KEYS[3])local result = redis.call('setnx', key, requestId)if result == 1 then --PEXPIRE:以毫秒的模式指定过期工夫 redis.call('pexpire', key, ttl)else result = -1; -- 如果value雷同,则认为是同一个线程的申请,则认为重入锁 local value = redis.call('get', key) if (value == requestId) then result = 1; redis.call('pexpire', key, ttl) endend-- 如果获取锁胜利,则返回 1return result通过数组定义-- releaseLock keylocal key = KEYS[1]local requestId = KEYS[2]local value = redis.call('get', key)if value == requestId then redis.call('del', key); return 1;endreturn -1<!-- tabs:end --> ...