Redis技术问答-NO1(redis 问题)
mhr18 2024-11-17 13:37 21 浏览 0 评论
一.什么是Redis?
Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis与其他key-value缓存产品有以下三个特点:
1.Redis支持数据的持久化,可以将内存中的数据报错在磁盘中,重启的时候可以再次进行加载使用。
2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3.Redis支持数据的备份,即master-slave模式的数据备份。
Redis优势:
性能极高-Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型-Redis支持二进制案例的Strings,Lists,Hashes,Sets及Ordered Sets数据类型操作。
原子- Redis的所有 操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
丰富的特性-Redis还支持publish/subscribe,通知,key过期等等特性。
Redis与其他key-value存储有什么不同?
Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于数据结构的同时对程序员透明,无需进行额外的抽象。
Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬盘内存。在内存数据库方面的另外一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为它们并不需要随机访问。
二、Redis的数据类型?
Redis支持五种数据类型:
string(字符串),hash(哈希),list(列表),set(集合)及zsetsorted set(有序集合)。
实际项目中比较常用的是string,hash如果你是Redis中高级用户,还需要加上下面几种数据机构:
HyperLogLog、Geo、Pub/Sub。
如果你说还玩过Redis Module,像BloomFilter,RedisSerach,Redis-ML,面试官眼睛就开始发亮了。
三、使用Redis有哪些好处?
1.速度快,因为数据存储在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O1。
2.支持丰富数据类型,支持string,list,set,Zset,hash 等。
3.支持事务,操作都是原子性的,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行。
4.丰富的特性:可用于缓存,消息,按照key设置过期时间,过期后将自动删除。
四.Memcache与Redis的区别有哪些?
1.存储方式Memcache把数据全部存在内存中,断电后会挂掉,数据不能超过内存大小。Redis有部分存储在硬盘上,这样能保证数据的持久性。
2.数据支持类型:Memchche对数据类型支持相对简单,Redis有复杂的数据类型。
3.使用底层模型不同:它们之间底层实现方式以及与客户端之间通讯的应用协议不一样。Redis直接自己构建了VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
五.Redis是单进程单线运行的吗?
Redis是单进程单线程的,Redis利用队列技术将并发访问变为串行访问,消除了传统数据串行控制的开销。
六.一个字符串类型值能存储最大容量是多少?
512M
七.Redis的持久化机制是什么?各自的优缺点?
Redis提供两种持久化机制RDB和AOF机制:
1.RDB(Redis DataBase)持久化方式:是指用数据集快照的方式半持久化,记录Redis数据库的所有键值对,在某个时间点将数据导入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。
优点:
1.只有一个文件dump.rdb,方便持久化。
2.容灾性好,一个文件可以保存到安全的磁盘。
3.性能最大化,fork子进程来完成操作,让主进程继续处理命令,所以是IO最大化。使用单独进程来进行持久化,主进程不会进行任何IO操作,保证了Redis的高性能
4.相对于数据集大时,比AOF的启动效率更高。
缺点:
1.数据安全性低。RDB是间隔一断时间进行持久化,如果持久化之间Redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候
2.AOF(Append-only file) 持久化方式:是指所有的命令行记录以Redis命令请求协议的格式完全持久化存储,保存为AOF文件。
有点:
1.数据安全,aof持久化可以配置appendfsync属性,有always,每进行一次命令操作就记录到aof文件中一次。
2.通过append模式写文件,即使中途服务器宕机,可以通过redis-check-aof工具解决数据一次性问题。
3.AOF机制的rewrite模式。AOF文件没有被rewrite之间(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的flushall)
缺点:
1.AOF 文件比RDB文件大,且恢复速度慢。
2.数据集大的时候,比RDB启动效率低。
八.Redis常见性能问题和解决方法
1.Master最好不好写内存快照,如果Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务。
2.如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次。
3.为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网。
4.尽量避免在压力很大的主库上增加从。
5.主从复制不要用图状结构,用单项链表结构更为稳定,即:Master<-Salve1<-Slave2<-Slave3...这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果master挂了,可以立即启动Slave1做Master,其他不变。
九.Redis过期删除策略?
1.定时删除:在设置键的过期时间时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作。
2.惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。
3.定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则有算法决定。
十.Redis的回收策略(淘汰策略)?
volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。
volatile-ttl:从已设置过期时间的数据库集中挑选将要过期的数据淘汰。
volatile-random:从已设置过期时间的数据集中任意选择数据淘汰。
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰。
allkeys-random:从数据集中任意选择数据淘汰。
no-envication(驱逐):禁止驱逐数据。
注意这里的6钟机制,volatile和allkeys规定了是对已设置过期时间的数据集淘汰数据还是从全部数据集淘汰数据,后面的lru,ttl以及random是三种不同的淘汰策略,再加上一种no-envication永不回收的策略。
使用策略规则:
1.如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用allkeys-lru。
2.如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用allkeys-random。
相关推荐
- 【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...
- Pure Storage推出统一数据管理云平台及新闪存阵列
-
PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...
- 对Java学习的10条建议(对java课程的建议)
-
不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...
- SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!
-
官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...
- JDK21有没有什么稳定、简单又强势的特性?
-
佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...
- 「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了
-
在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...
- Java面试题及答案最全总结(2025版)
-
大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...
- 数据库日常运维工作内容(数据库日常运维 工作内容)
-
#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...
- 分布式之系统底层原理(上)(底层分布式技术)
-
作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...
- oracle 死锁了怎么办?kill 进程 直接上干货
-
1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...
- SpringBoot 各种分页查询方式详解(全网最全)
-
一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...
- 《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略
-
《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...
- LoadRunner(loadrunner录制不到脚本)
-
一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...
- Redis数据类型介绍(redis 数据类型)
-
介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...
- RMAN备份监控及优化总结(rman备份原理)
-
今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)