zoukankan      html  css  js  c++  java
  • 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代码块中需要解锁。(在秒杀系统的高并发下也可以使用这种方法)
  • 相关阅读:
    在内容页中修改母版页中的内容
    mssql分页
    .net 时间格式(转)
    EnableViewState详细分析
    .net自带的邮件发送类
    只有在配置文件或 Page 指令中将 enableSessionState”的异常解决办法
    web.config配置
    Web.config配置文件详解(转载)
    [Resume]:Resume(English)
    Observer Pattern, Delegate and Event
  • 原文地址:https://www.cnblogs.com/tanyiming/p/11172669.html
Copyright © 2011-2022 走看看