Redis相关知识


#🌳 什么是Redis
redis是一款 非关系型数据库,将数据以键值对的形式储存在内存中,读取速度快,支持多种数据类型,支持数据持久化。

🌳Redis基本数据类型

String(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)

🌳Redis的作用

缓存、计数、排行榜、数据排重、消息队列、分布锁

🌳Redis的线程模式

客户端的连接请求采用多线程,键值对读写命令采用单线程
注:Redis 6.0之前都是使用单线程

🌳Redis单线程模式速度快的原因:

1.基于内存操作,读写在内存进行
2.底层结构是哈希表,键值对应查找很快
3.读写操作仍是单线程

🌳Redis的持久化:

🍁RDB

将Redis数据以快照的形式存储在一个rbd文件中
可以在Redis.conf中配置save规则
注:Redis默认使用持久化方式

🍁AOF

以日志的形式记录的写操作指令,在恢复数据时采用将指令重新执行方法

🌳 Redis如何与mysql保持一致:

方法一.更新MySQL数据,更新Redis数据
注:Redis可能更新失败
方法二.删除Redis数据,更新mysql数据
注:多线程操作Redis可能还是MySQL之前的老数据
方法三.删除Redis数据,更新Mysql数据,等待若干秒删除Redis数据(延时双删)

🌳Redis事物

🍁什么是Redis事物:

Redis事物是一组命令的集合,将一组命令作为一个整体,执行过程中,不会被其他客户端命令请求打断
注:Redis事物中就算一组命令里有一个错误命令也不妨碍其他命令执行

🍁Redis事物操作:

  multi(开启事物)
  指令1
  指令2
  指令3
  exec(执行事务)

注:java代码版本

redisTemplate.multi()//开启事物
//指令1
//指令2
//指令3
redisTemplate.exec()//执行事务

🌳主从复制

一台作为主机,多台作为从机(备份机),主机与从机数据完全一致,主机支持数据的读取与写入操作,而从机只有读取操作,主机数据写入,数据自动备份到从机上,完成读写分离操作

🌳哨兵模式

redis集群配置一个独立进程即哨兵,哨兵定期向每个Redis服务发送命令,等待redis服务的响应,从而达到监视多个redis实例的目的,
注:若主机宕机,哨兵会从从机里选举出一个作为主机

🌳 Key过期策略

1.惰性删除:key过期时,不会立马删除,等到下次使用他时,检测到过期,才会删除
2.定期删除:设置时间节点,扫描过期Key,将其删除
注:Redis两种方式均使用

🌳缓存穿透,缓存击穿,缓存雪崩

🍁缓存穿透

原因:访问数据在数据库中没有,redis没有
解决方法:
1.对参数进行检验
2.可以在redis设置key-null 注:空对象会设置一个较短过期时间

🍁缓存击穿

原因:热点信息key过期同时有大量请求到来
解决方法:
1.设置key过期时间用该注意,可以设置永不过期
2.给第一个访问此数据的请求加锁

🍁缓存雪崩

原因:在访问量很大情况下,大量key过期
解决方法:
1.随机设置过期时间
2.集群部署,
3.定时任务,若key快过期时,重新设置过期时间

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值