Redis
2021-09-04 00:27:59 29 举报
AI智能生成
Redis学习路径完整版
作者其他创作
大纲/内容
基础
key
redis.conf
后台启动
daemonize yes
远程访问
bind 注释或改为对应ip
protected-mode
no 外部网络可以直接访问
yes 需配置bind ip或者设置访问密码
port
6379
基本数据类型
String
扩容
List
数据结构
Set
底层实现
Hash
数据结构
Zset
数据结构
高级
发布订阅
Bitmaps
对于只有两种情况的业务,可以极大的节省空间
实际应用:布隆过滤器
HyperLogLog
统计不重复元素的个数
geospatial
坐标相关操作
可实现附近的人等
事务
组队阶段出现错误,直接退出事务
执行阶段出现错误,只有错误的指令不会执行,其他的正常执行
watch命令的原理是乐观锁
持久化
RDB
Redis DataBase
指定的时间间隔将内存中数据集快照写入文件
触发策略
save m n
m秒内有n个key改变
save与bgsave
save保存时会阻塞其他操作
bgsave是异步进行的
默认开启
AOF
Append Of File
以日志形式记录每个写操作
开启AOF
appendonly yes
同步频率
appendfsync
always
每次写操作
everysec
每秒
no
交给操作系统控制
默认关闭
主从复制
命令
info replication
查看主从配置信息
slaveof ip port
设置为ip:port的从服务器
slaveof no one
将从服务器变为主服务器
注意点
从服务器重启后需要再次设置 slaveof
主服务器挂掉后,并不会主动选出新的主服务器
从服务器是只读的,每次设置slaveof都会全量复制主服务器
哨兵模式
当主机挂掉,从机自动选举出新的主机
原主机重启后会变为从机
sentinel.conf
集群
集群最少要6个节点,3主3从
集群有16384 slot,主服务器平分16384,根据key计算出由那个主服务器处理
主从之间数据一致,每个主服务器都是完整数据的一部分
故障恢复
主服务器挂掉后,从服务器自动变为主服务器
此时主服务器启动后变为从服务器
主从都挂掉
cluster-require-full-coverage
yes 集群挂掉
no 该slot区间不可用
应用问题
缓存穿透
大量请求在缓存和数据库中都没有的数据
解决
对空值进行缓存
白名单
布隆过滤器
缓存击穿
大量请求缓存中没有,数据库中有(一般为缓存过期)的数据
解决
饿汉式加载热门缓存
调整过期时间
缓存雪崩
大量缓存数据过期导致数据库宕机
解决
失效时间分散开
分布式锁
加锁
setnx key value
当key不存在时才能设置值
当进程刚获得锁后出现异常,导致锁无法释放
设置过期时间
释放锁
delete key
当过期时间设置较短,A进程未结束自动释放锁,B进程获得锁后,A会将B的锁删除
释放锁时判断value值,不为自己设置的值不释放
在判断value值相等之后,删除key之前,刚好过期自动释放锁,其他进程获取锁后,导致锁被删除
判断和删除设置为原子操作
redis6新功能
ACL
访问控制列表
IO多线程
客户端交互为多线程、执行命令认为单线程
0 条评论
下一页