Redis面试题(4)

0    121    1

Tags:

👉 本文共约16700个字,系统预计阅读时间或需63分钟。

Redis面试题(4)

认识Redis

  1. REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
  2. Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis的数据类型都有哪些

  1. 有五种基本数据类型,分别是string、hash、list、有序集合(zset)、集合(set)。在5.0之后增加了一种Stream类型。
  2. 额外的有GEO、HyperLogLog、BitMap。

Redis使用的场景有哪些

  1. 数据缓存(用户信息、商品数量、文章阅读数量)
  2. 消息推送(站点的订阅)
  3. 队列(削峰、解耦、异步)
  4. 排行榜(积分排行)
  5. 社交网络(共同好友、互踩、下拉刷新)
  6. 计数器(商品库存,站点在线人数、文章阅读、点赞)
  7. 基数计算
  8. GEO计算

Redis功能特点都有哪些

  1. 持久化
  2. 丰富的数据类型(string、list、hash、set、zset、发布订阅等)
  3. 高可用方案(哨兵、集群、主从)
  4. 事务
  5. 丰富的客户端
  6. 提供事务
  7. 消息发布订阅
  8. Geo
  9. HyperLogLog
  10. 事务
  11. 分布式事务锁

Redis如何实现分布式锁

  1. Redis可以使用setnx key value
    + expire key expire_time
    来实现分布式锁。
  2. 正常情况下,上面的命令是没有问题的。当Redis出现异常的情况下,很容易出现非原子性操作。
  3. 非原子性操作指的的setnx命令执行成功,但是expire没有执行成功,此时key就成为了一个无过期时间的key,一直保留在Redis中,导致其他的请求就无法执行。
  4. 要解决该问题,可以使用lua脚本实现。通过lua实现命令的原子性操作。

在Redis中使用set命令,加参数也可以实现分布式锁。set key vale nx ex|px ttl

通过数组定义

通过数组定义

tips:如果对一个key第一次set添加了过期时间,第二次操作时没有添加过期时间,此时key是没有过期时间的(过期时间被覆盖为永久不过期)。

Redis底层数据结构有哪些

Redis底层数据结构主要有六种,这六种构成了五种常用的数据类型。其他的数据类型,例如bitmap、hyperLogLog也是基于这五大数据类型实现。具体的数据结构图如下:

Redis面试题(4)

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
Redis面试题(4)后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章
验证码:
请关注本站微信公众号,回复“小麦苗博客”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部