key筛选 redis_# 技术笔记:redis

redis (ap保证可用性)

基于内存的单线程操作,所以不能用bigkey

一共16个库(0-15)

数据结构

string字符串(INCR 文章阅读数等)

hash (购物车 商品id+商品数量)

list列表 (LPUSH LRANGE 微博微信消息流,不适用大流量)

set集合 (SADD 交集并集计算 微信抽奖、点赞、关注模型、共同好友、商品筛选)

zset有序集合 (ZADD 每个集合带有分值 分值+1 微博热搜、排行榜)

3ce860593cffa41ab6405f66196e873a.png

分布式锁

SETNX命令(在高并发情况下产生商品购买的情景)

1.代码异常下:

要加finally代码块,保证释放锁

2..服务宕机情况下:

设置超时时间,在高并发情况下,给线程加唯一id 然后判断线程的唯一id,防止锁永久失效

3.释放锁之前超时了:

4.超时时间问题:

另外起线程 定时任务查看是否持有锁,还原超时时间(锁续命)

5.使用redisson工具加锁释放锁,加锁的方法底层执行lua脚本,保证原子性的

问题

1.讲讲redis

redis是一种支持key-value等多种数据结构的存储系统,用于缓存、订阅等,基于内存存储,可持久化

2.有哪些数据结构

string字符串、hash、list列表 、set集合 、zset有序集合

3.redis的持久化

数据(内存中的对象)保存到可永久保存的存储设备中(磁盘)

1.应用层:如果关闭(shutdown)你的应用然后重新启动则先前的数据依然存在。

2.系统层:如果关闭(shutdown)你的系统(电脑)然后重新启动则先前的数据依然存在。

3.为什么要持久化:为了防止重启系统或者关闭系统丢失数据

4.如何持久化:

RDB持久化:能够在指定的时间间隔能对你的数据进行快照存储。

AOF持久化:以独立日志的方式记录每次写命令, 重启时再重新执行AOF文件中的命令达到恢复数据的目的

5.缓存穿透:

缓存穿透是指用户请求的数据,不在内存中,也不在数据库中,如果有恶意攻击不断请求不存在的数据。数据库会因为大量的请求导致压力过大崩溃。

6.缓存击穿:

缓存击穿是指一个key非常热点,大量请求导致key失效,穿过redis直接请求数据库

如何解决:1.使用互斥锁2.针对热点key不设置过期时间

7.缓存雪崩

缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,请求直接落到数据库上,引起数据库压力过大甚至宕机。

如何解决:1.加互斥锁2.用一个异步的线程更新缓存

8.缓存预热:

缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统,就不需要用户先查数据库再添加到缓存中。

9.什么是redis主从复制

主从复制是指将一台Redis服务器的数据,复制到其他的Redis服务器,数据的复制是单向的,只能由主节点到从节点。

10.讲一讲redis集群

redis命令手册:Redis 命令参考 - Redis 命令参考

参考:2020年Java后端面试题大全96集(阿里+京东+美团+滴滴)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

看完这20道Redis面试题后,蚂蚁金服面试可以约起来了?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值