首页 > 数据库 >11_Redis

11_Redis

时间:2023-03-06 23:03:11浏览次数:51  
标签:11 AOF 过期 Redis redis Master key

Redis【简介&安装篇】 - 知乎 (zhihu.com)

【1】什么是redis,谈谈你对redis的理解

redis 就是一个数据库,不过与传统数据库不同的是, redis 的数据是key-value存储在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。redis 提供了五种数据类型来支持不同的业务场景。

【2】redis常见数据结构以及使用场景分析

  1. String,常规计数场景:微博数,粉丝数,页面访问次数等,涉及命令:incr、decr、incrby、decrby。

  2. List,列表场景:微博的关注列表,粉丝列表,消息列表,涉及指令:lrange(进行分页查询)

  3. Hash,存储对象信息:用户信息,商品信息。

  4. Set,求交集场景:共同关注、共同粉丝、共同喜好,涉及指令:sinterstore。

  5. SortedSet,排行榜场景:网易云音乐歌曲排行榜、在线用户列表,直播弹幕消息。

【3】redis设置过期时间了解吗

redis中有个设置时间过期的功能,即对存储在 redis 数据库中的key可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的token或者一些登录信息以及短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。使用redis的expire指令可以很好的完成这个需求。

【4】redis是怎么对过期的key进行删除的?

定期删除+惰性删除。

定期删除:redis默认是每隔 100ms 就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。注意这里是随机抽取的。为什么要随机呢?你想一想假如 redis 存了几十万个 key ,每隔100ms就遍历所有的设置过期时间的 key 的话,就会给 CPU 带来很大的负载!

惰性删除 :定期删除可能会导致很多过期 key 到了时间并没有被删除掉。所以就有了惰性删除。假如你的过期 key,靠定期删除没有被删除掉,还停留在内存里,除非你的系统去查一下那个 key,才会被redis给删除掉。这就是所谓的惰性删除,也是够懒的哈!

【5】redis 持久化机制

RDB、AOF。

RDB方式:创建数据库快照来持久化redis服务器的数据,将数据保存到rdb文件中。

AOF方式:开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件,从而实现redis的持久化,并且还会定时的重写AOF文件,以免文件过大。

【6】AOF 重写

AOF重写机制并不是对原AOF文件进行重写,而是创建一个临时的AOF文件,然后根据redis的键值对来实现数据持久化,最后再覆盖原AOF文件。重写后的AOF文件和原AOF文件存储的数据一样,但是大小会更轻。

redis基础

  1. Redis是一个开源的,使用ANSI C 编写的,高性能Key-Value的NoSQL数据库。所以很有必要了解了解redis的key和value。
  2. key只能是字符串,value常用的数据结构类型:String(点赞)、List(评论楼层)、Hash(常用)、Set(共同关注)、SortedSet(排行榜)

redis持久化

  1. redis是一款基于内存的NoSQL数据库,数据都存储在内存中,一旦机器出现宕机,或者突发意外断电等,导致机器无法正常工作的情况下,那么redis中的数据就丢失了,面对这种问题,redis提供了持久化机制将数据保存到本地磁盘中,以便在服务器宕机之后,可以对数据进行恢复。
  2. Redis持久化,就是将内存中的数据,永久保存到磁盘上。
    Redis持久化有两种方式:RDB(快照模式)、AOF(追加模式、命令重演)。
  3. RDB(快照模式):在默认情况下,Redis 将数据库快照保存在名字为dump.rdb的二进制文件中,可以在redis.conf配置文件中修改持久化信息。
  4. AOF(追加模式、命令重演):采用追加的方式保存,默认文件为appendonly.aof;记录所有的写操作命令,在服务启动的时候重演这些命令就可以还原数据库;AOF默认关闭,需要在配置文件中手动开启。

redis集群

  1. 所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态(高可用)。
  2. 单个redis存在不稳定性。当redis服务宕机了,就没有可用的服务了。单个redis的读写能力是有限的。redis集群是为了强化redis的读写能力、确保服务的高可用。
  3. redis集群中,每一个redis称之为一个节点。redis集群中,有两种类型的节点:主节点(master)、从节点(slave)。redis集群,是基于redis主从复制模式实现的。
  4. redis主从复制模式:主从复制模式中,有多个redis节点。其中,有且仅有一个为Master,而Slave可以有多个。并且只要网络连接正常,Master会一直将自己的数据同步更新给Slaves,保持主从同步。
  5. 主从模式下,当Master宕机了,整个集群就没有可写的节点了。显然主从模式不是我们想要的集群方式。因为Slave上备份了Master的所有数据,那在Master宕机的情况下,如果能够将Slave变成一个Master,是不是就可以解决这个问题了呢?这个就是哨兵Sentinel的作用
  6. Sentinel哨兵模式:
  7. **监控(Monitoring):Sentinel会不断地检查Master和Slave是否运作正常。
    **提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。
    **自动故障迁移(Automatic failover): 当Master不能正常工作时,Sentinel会开始一次自动故障迁移操作,它会进行选举,将其中一个Slave升级为新的Master,其他的Slave改为新Master的Slave;当客户端试图连接失效的Master时,集群会向客户端返回新Master的地址,使得集群可以使用新Master代替失效Master。

标签:11,AOF,过期,Redis,redis,Master,key
From: https://www.cnblogs.com/cxk6/p/17185853.html

相关文章

  • 3.36每日总结11
    今天利用不到两个小时的时间进行了第一次作业界面的设计以及后台部分代码的设计,在这期间遇到了布局中按钮位置不能改变的问题,然后经过百度查找到了改变线性布局的位置......
  • 11:swift-方法
      正文/*1:方法是关联了特定类型的函数。类,结构体以及枚举都能定义实例方法,方法封装了给定类型特定的任务和功能。类,结构体和枚举同样可以定义类型方法,这是与类......
  • [Primer] 第 11 章 使用类
    第11章使用类11.1运算符重载使用operator+等替代函数名即可实现运算符重载。重载运算符后,原等式sum=x+y;将被替换为sum=x.operator+(y);。11.2计算时......
  • Orcale 11 Linux 64 安装包下载
    OracleDatabase11gRelease2(11.2.0.1.0)forMicrosoftWindows(64-bit)http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_database_1of2.ziphttp:/......
  • 银河麒麟v10 sp1 安装 PostgreSQL 11.16
    一、安装环境   操作系统:银河麒麟v10 sp3 x86_64   内核版本:   PostgreSQL版本:11.16二、安装过程2.1下载源码包创建目录mkdir-p/tools/postgresql......
  • make & make install安装Redis时失败报错
    问题描述:今天在安装redis服务时,执行make&makeinstall命令后出现下面这个错误zmalloc.h:50:31:fatalerror:jemalloc/jemalloc.h:Nosuchfileordirectory  ......
  • RedisDesktopManager工具本地服务端连接失败的问题
    观前提示,以下方法仅实践于本地服务端的连接测试。  在redis分布式运行后,需要对redis队列和指纹信息进行清除,但是,在打开RedisDesktopManager可视化工具进行连接时,发现总......
  • 内存耗尽后Redis会发生什么
    前言作为一台服务器来说,内存并不是无限的,所以总会存在内存耗尽的情况,那么当Redis服务器的内存耗尽后,如果继续执行请求命令,Redis会如何处理呢?内存回收使用Redis服务时,很......
  • docker-compose搭建redis哨兵模式(一主二从三哨兵)
    参考:https://blog.csdn.net/band_mmbx/article/details/1264280411、安装docker和docker-compose2、配置redis2.1下载redis.conf配置文件因为docker启动redis是默认没......
  • 既然有MySQL了,为什么还要有Redis?
    一、同样是缓存,用map不行吗?Redis可以存储几十个G的数据,Map行吗?Redis的缓存可以进行本地持久化,Map行吗?Redis可以作为分布式缓存,Map只能在同一个JVM中进行缓存;Redis支持每秒百......