• 面试Java高级工程师之Redis总结


    一、为什么要用redis缓存,能解决什么问题

    1、redis是一个非关系型数据库,数据存储在内存中,使用键值对来存储

    2、使用redis能够提升系统性能,减小数据库压力,能够更加灵活的存储数据

    二、redis数据结构有哪些

    1、string字符串

    2、list列表

    3、hash哈希表key-vlue

    4、set无序集合,元素不可重复

    5、zset有序集合,元素不可重复

    三、redis分布式锁使用场景有哪些,怎么实现的

    使用场景:

    1、在微服务分布式架构下,当多个服务同时访问一个共同资源时,会发生资源竞争

    2、在高并发场景下,多个客户端同时发起请求访问同一个接口处理业务时

    3、前端进入一个页面同时触发多个ajax请求后台插入数据时

    方案一实现思路:

    1、定义唯一的key

    2、设置锁有效期、等待时间

    3、利用redis的方法SETNX来判断值是否设置成功

    4、如果设置成功则返回1表示已获取锁,继续处理业务,最后在finlly中释放锁

    5、如果设置失败,则每隔0.5毫秒继续自循环判断等待时间,超过等待时间则返回0获取锁超时,未超过则重新设置值来获取锁

    方案二实现思路:

    1、通过lua脚本的方式实现CAS复合操作

    四、redis中setEx和setNx有什么区别

    setex:把set和expire命令合二为一作为一个原子操作

    setnx:先判断key是否存在,不存在则设置值,存在则不做操作

    五、memcached是什么,解决什么问题,和redis有什么区别

    1、memcached是一个内存数据库,通过键值对来存储,使用更加简单,目的是能够的提供高性能服务,响应都是毫秒级别,是多线程架构模式

    2、memcached和redis都是键值对存储数据到内存中,redis支持更丰富的功能,如lua脚本、集合、哈希、快照等,memcached是多线程架构,redis是单线程,都是响应毫秒级别,都是为了能够提升系统性能而存在

    六、MongoDB是什么,和redis有什么区别

    1、mongoDB是一种非关系型数据库,以文档、集合概念,使用bson数据结构来存储数据,类似json格式

    2、mongoDB提供即时查询、保留了索引底层基于B tree算法,redis没有这些功能,操作命令不一样

  • 相关阅读:
    8月18日计算机视觉理论学习笔记——图像预处理
    解密Web安全:Session、Cookie和Token的不解之谜
    轻松玩转Vite/Rollup/webpack/esbuild/Rspack/babel插件开发(一)
    mysql千万数据快速插入-实战
    【CesiumJS】(1)Hello world
    Java文件输入输出(简单易懂版)
    假设检验计算
    不同材质的油封及其使用温度限制
    RocketMQ多机集群配置和部署
    【iOS】AutoreleasePool自动释放池的实现原理
  • 原文地址:https://blog.csdn.net/biao_java/article/details/126311427