• Redis面试


    Redis面试


    存储类型:String,list,set,hash,zset

    集群方案:codis,redis-cluster,业务层实现关联几个不同的redis实例

    如何保证热点数据:数据淘汰策略

    (redis中有6种淘汰策略:报错,随机删除,删除最少使用的键,在设置时间的键位中删除最少使用(最早过期,随机移除))

    集群主从复制措施:异步复制

    哈希槽:16384个

    事物:MULTI,EXEC,DISCARD,WATCH


    redis缓存雪崩

    即大面积的数据同一时间内失效。

    解决方案:

    • 1.失效时间设为随机
    • 2.使用互斥锁或者队列(如设置只允许单个key访问数据库,其他线程等待)
    • 3.使用双缓存。A,B两个redis服务器,B不过期,A过期时,访问B,同时启动异步线程,刷新A和B的缓存。

    redis缓存穿透

    即高并发请求redis缓存中没有的key,导致压力到数据库。

    • 1.使用互斥锁或者队列。得到锁才能请求数据库
    • 2.异步更新(无论是否有该Key,都将该key写到redis中,并设置时间,过期后用异步更新,需要做缓存预热)
    • 3.提供拦截机制,如IP拦截等,判断查询的合法性。

    单线程redis的问题

    单线程redis快的原因:

    • 1.纯内存操作
    • 2.单线程操作,无需切换进程上下文
    • 3.采用了非阻塞I/O多路复用机制(即一个快递员方法)

    redis与分布式锁

    利用redis的键判断幂等性

    redis的分布式事物

    用watch方法观察唯一key,在redis事物提交之前,判断是否有该key,无则提交。当然要考虑异常问题,所以在finally代码块中需要解锁。(在秒杀系统的高并发下也可以使用这种方法)
  • 相关阅读:
    如何完全卸载oracle和删除oracle在注册表中的注册信息
    win10 管理工具中添加 oracle 10g驱动
    failed to install tomcat6 service ,check your setting and permissions
    ORA-28000: the account is locked-的解决办法
    Intellij Idea乱码解决方案
    过三关 Java冒泡排序选择排序插入排序小练习
    Java坦克大战(四)
    Java坦克大战(三)
    Java坦克大战(二)
    Java坦克大战(一)
  • 原文地址:https://www.cnblogs.com/tanyiming/p/11172669.html
Copyright © 2020-2023  润新知