码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • redis问题汇总


    文章目录

      • 一.redis的优点
        • 二.redis的数据结构
        • 三.redis分布式锁是怎么回事?
        • 四.redis里面有1亿个key,其中有10w个key是以某个固定前缀开头的,如何将他们全部找出来?
        • 五.如何使用redis作异步队列
        • 六.如果有大量的key需要设置同一过期时间,一般需要注意什么?
        • 七.redis如何做持久化?
        • 八.pipline有什么好处?
        • 九.redis同步机制了解吗?
        • 十.是否使用过redis集群?

    一.redis的优点

    1.数据在内存中,运算速度更快

    2.使用了非阻塞的NIO读写模型,通过时间轮询API处理读写事件,支持更高的并发量、

    3.通信协议简单、解析性能高

    4.支持管道将命令分组发送执行,减少了网络IO,更高效

    5.redis使用了编码技术优化了空间占用,还会对一些小对象进行压缩存储

    二.redis的数据结构

    • 基础:string、hash、list、set、zset

    • 进阶:HyperLogLog、GeoHash、BloomFilter

    三.redis分布式锁是怎么回事?

    使用setnx和ex结合使用,redis还提供了set key nx value ex 5的形式进行原子性设置,但是会存在超时自动释放的问题

    四.redis里面有1亿个key,其中有10w个key是以某个固定前缀开头的,如何将他们全部找出来?

    可以使用keys命令,但是是一次遍历全部数据,可能会导致线程阻塞。可以使用scan命令,可以无阻塞地取出指定模式的key列表,但是可能会重复,花费时间也会更长

    五.如何使用redis作异步队列

    一般使用list作异步队列,rpush产生消息,lpop消费消息,当lpop没有消息时,sleep一会儿再重试。

    • 能不能不用sleep?

    ​ 可以使用阻塞获取消息,当没有消息时会阻塞直到消息到来。

    • 能不能生产一次消费多次?

      可以使用pub/sub主题订阅者模式,可以实现1:N的消息队列

    • pub/sub有什么缺点?

      不支持持久化,消费者下线时消息会丢失

    • 如果利用redis实现延迟队列?

      使用zset,消息内容作为key,时间戳作为score,通过zadd添加消息,消费者使用zrangebyscore获取轮询处理消息

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

    大量的key集中在同一时间过期时,redis会出现短暂的卡顿,一般需要在时间上加一个随机值,使得过期时间分散些

    七.redis如何做持久化?

    bgsave做镜像全量持久化,aof做增量持久化。bgsave比较耗时,不够实时,需要配合aof使用。重启时有限使用aof恢复,如果没有才会使用rdb文件恢复

    • aof文件过大怎么办?

      redis会定期对aof进行重写,压缩aof文件大小。redis4.0之后有了混合持久化的功能,将rdb文件和aof文件进行融合,既兼顾了效率,又保证了数据的安全。

    • redis宕机数据会怎样?

      取决于redis刷盘配置,可以按照每条执行都执行一次sync动作,但是性能会降低;也可以配置每秒刷新一次,那么宕机时只会丢失1s的数据。

    八.pipline有什么好处?

    可以将多次网络IO往返的时间缩短为1次。

    九.redis同步机制了解吗?

    redis可以使用主从同步或从从同步。第一次同步时主节点做bgsave生成rdb文件,并将后续的修改记录保存到bufffer中,待完成后将rdb文件全量复制到从节点,从节点将rdb文件全量加载到内存。加载完成后再通知主节点将同步期间的修改同步到复制节点就完成了同步

    十.是否使用过redis集群?

    redis-sentinel着眼于高可用,master宕机时会将slave自动提升为master,继续提供服务

    redis-cluster侧重于扩展性,在单个redis内存不足时,使用cluster进行分片存储。

  • 相关阅读:
    2022年你应该知道的5个高级SQL概念
    聊聊如何利用管道模式来进行业务编排(上篇)
    Kotlin高仿微信-第33篇-支付-充值
    2023年9月青少年机器人技术(三级)等级考试试卷-理论综合
    STM32F103xx TFT液晶显示ASCII字符串、中文、图片并且显示带有镜像和旋转功能
    如何将已经安装的 WSL(Ubuntu)移动到其他的盘或位置
    windows 各种inject/hook学习材料(自用)
    C#—VB.NET的相同点与不同点
    ROS-serial串口包的数据原始模式使用方法
    腾讯云服务器多少钱一年?2023年腾讯云优惠云服务器推荐
  • 原文地址:https://blog.csdn.net/qq_43216019/article/details/133895022
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号