基础总结--redis

本文探讨了分布式缓存技术如Redis和Memcached的选择、缓存数据操作流程、Redis的数据结构、内存管理策略、事务处理、缓存问题如穿透和雪崩的解决方法,以及基于Redis实现分布式锁的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 分布式缓存常见的技术选型方案有哪些?

Redis、Memcached
在这里插入图片描述

2 说一下有缓存情况下查询数据和修改数据的流程

修改流程:
1 先写db,在写缓存
先写缓存,在写db;
2 先更新db,再删除缓存
先删除缓存,再更新数据库
3 延迟双删

3 redis有哪些数据结构,sds了解么

Redis有5大类型,string、list、hash、set、sort set

SDS字符串类型(简单动态字符串)
sdshdr
len 5
alloc 10
flags 1
buf -->[ | | | | | …]

4 Redis内存满了怎么办?

增加redis内存大小
删除过期数据
使用Redis持久化

redis内存淘汰算法:LRU RFU 是否到过期时间

redis给缓存设置过期时间,可以惰性删除和定时删除

5 Redis事务

可以通过Multi\exec、discard和watch等命令实现事务功能

6 缓存穿透和缓存雪崩了解过么?有哪些解决办法?

雪崩、击穿、穿透
缓存同时过期或者夯机;热点问题;恶意攻击访问没有值

前两个都是让大量缓存同时失效:给过期时间+随机值
服务降级
防御式编程;布隆过滤器

7 如何基于redis实现分布式锁

先说下分布式锁(性能高->低):
缓存
zk
数据库唯一值

redis分布式锁方案:
1 setnx + expire
2 setnx + value值(系统时间+过期时间)
3 lua脚本(包含setnx + expire两条指令)
4 Redisson框架

redission是假设在redis基础上的一个java主内存数据网络,redission在NIO的Netty框架上,生产环境使用分布式锁

在这里插入图片描述
执行步骤
1 根据负载均衡策略选择一个redis主节点。
2 执行lua脚本加锁,加锁成功返回null,否则返回当前锁的剩余过期时间。
3 watchlog机制,定时线程给当前锁每个10s执行一次续命
4 获取锁成功,则return,失败则自旋获取锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值