15、Redis 常见性能问题和解决方案?
定期删除,redis默认每个100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,redis岂不是卡死)。因此,如果只采用定期删除策略,会导致很多key到时间没
有删除。于是,惰性删除派上用场。也就是说在你获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期了?
如果过期了此时就会删除。
采用定期删除+惰性删除就没其他问题了么?
不是的,如果定期删除没删除key。然后你也没即时去请求key,也就是说惰性删除也没生效。这样,redis的内存会越来越高。那么就应该采用内存淘汰机制。在redis.conf中有一行配置
maxmemory-policy volatile-lru
该配置就是配内存淘汰策略的(什么,你没配过?好好反省一下自己)
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰 volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰 allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰 no-enviction(驱逐):禁止驱逐数据,新写入操作会报错
ps:如果没有设置 expire 的key, 不满足先决条件(prerequisites); 那么 volatile-lru, volatile-random 和volatile-ttl 策略的行为, 和 noeviction(不删除) 基本上一致
15、Redis 常见性能问题和解决方案?
(1) Master 最好不要做任何持久化工作,如 RDB 内存快照和 AOF 日志文件 (2) 如果数据比较重要,某个 Slave 开启 AOF 备份数据,策略设置为每秒同步一次
(3) 为了主从复制的速度和连接的稳定性, Master 和 Slave 最好在同一个局域网内 (4) 尽量避免在压力很大的主库上增加从库
(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即: Master <- Slave1 <- Slave2 <-Slave3...
16、为什么Redis的操作是原子性的,怎么保证原子性的?
对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。
Redis的操作之所以是原子性的,是因为Redis是单线程的。
Redis本身提供的所有API都是原子操作,Redis中的事务其实是要保证批量操作的原子性。
多个命令在并发中也是原子性的吗?
不一定,将get和set改成单命令操作,incr。使用Redis的事务,或者使用Redis+Lua==的方式实现。
17、Redis事务
Redis事务功能是通过MULTI、EXEC、DISCARD和WATCH 四个原语实现的 Redis会将一个事务中的所有命令序列化,然后按顺序执行。
1.redis 不支持回滚“Redis 在事务失败时不进行回滚,而是继续执行余下的命令”,所以 Redis 的内部可以保持简单且快速。
2.如果在一个事务中的命令出现错误,那么所有的命令都不会执行;
3.如果在一个事务中出现运行错误,那么正确的命令会被执行。
1)MULTI命令用于开启一个事务,它总是返回OK。 MULTI执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是被放到一个队列中,当EXEC命令被调用时,所有队列中的命令才会被执行。
2)EXEC:执行所有事务块内的命令。返回事务块内所有命令的返回值,按命令执行的先后顺序排列。当操作被打断时,返回空值 nil。
3)通过调用DISCARD,客户端可以清空事务队列,并放弃执行事务,并且客户端会从事务状态中退出。
4)WATCH 命令可以为 Redis 事务提供 check-and-set(CAS)行为。可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行,监控一直持续到EXEC命令
18、Redis 的持久化机制是什么?各自的优缺点?
Redis 提供两种持久化机制 RDB 和 AOF 机制:
1、RDBRedis DataBase)持久化方式:是指用数据集快照的方式半持久化模式)记录 redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。
优点:
1、只有一个文件 dump.rdb,方便持久化。
2、容灾性好,一个文件可以保存到安全的磁盘。
3、性能最大化,fork 子进程来完成写操作,让主进程继续处理命令,所以是 IO最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis的高性能) 4.相对于数据集大时,比 AOF 的启动效率更高。
缺点:
1、数据安全性低。RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候)

全站分卷索引 · 222 卷
- 1JavaOOP面试题
- 27、Java的数据结构有那些?
- 314、Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
- 420、访问修饰符 public,private,protected,以及不写(默认) 时的区别?
- 525、equals与==的区别
- 641、Object类常用方法有那些?
- 747、构造方法能不能显式调用?
- 854、String str=”aaa”,与String str=new String(“aaa”)一样吗?
- 963、Hashcode的作用
- 1066、有没有可能两个不相等的对象有相同的hashcode
- 1170、final、finalize()、finally
- 1278、什么是成员内部类
- 1385、排序都有哪几种方法?请列举
- 1495、String 和 StringBuilder、StringBuffer 的区别?
- 15100、Java 中会存在内存泄漏吗,请简单描述。
- 16101、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被 synchronized修饰?
- 17104、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?
- 18107、内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
- 193、Collection包结构,与Collections的区别
- 208、集合类存放于 Java.util 包中, 主要有几 种接口
- 2114、HashSet( Hash 表)
- 2216、说说LinkHashSet( HashSet+LinkedHashMap)
- 2319、HashTable(线程安全)
- 2421、LinkHashMap(记录插入顺序)
- 253、如何自定义一个异常
- 266、Thow与thorws区别
- 273、常用io类有那些
- 2810、JAVA NIO
- 29Java反射面试题
- 308、Java 反射 API
- 31Java序列化面试题
- 327、序列化 ID
- 332、注解是什么?
- 343、实现 Runnable 接口。
- 357、如何停止一个正在运行的线程
- 368、notify()和notifyAll()有什么区别?
- 3711、Thread 类中的start() 和 run() 方法有什么区别?
- 3817、SynchronizedMap和ConcurrentHashMap有什么区别?
- 3922、说说自己是怎么使用 synchronized 关键字,在项目中用到了吗synchronized关键字最主要的三种使用方式
- 4030、阻塞状态(BLOCKED)
- 4133、start 与 run 区别
- 4238、Synchronized 同步锁
- 4340、Condition 类和 Object 类锁方法区别区别
- 4443、Semaphore 与 ReentrantLock 区别
- 4549、轻量级锁
- 4657、线程中断(interrupt)
- 4764、寄存器
- 4874、拒绝策略
- 4977、Java 中的阻塞队列
- 5078、ArrayBlockingQueue(公平、非公平)
- 5185、在 java 中守护线程和本地线程区别
- 5292、在 Java 中 Executor 和 Executors 的区别?
- 5397、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
- 54103、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
- 55JVM面试题
- 5610、解释 Java 堆空间及 GC?
- 5712、程序计数器(线程私有)
- 5818、描述一下 JVM 加载 class 文件的原理机制
- 5923、新生代
- 6029、标记清除算法( Mark-Sweep)
- 6132、分代收集算法
- 6238、JAVA虚引用
- 6346、Parallel Scavenge 收集器(多线程复制算法、高效)
- 6459、CMS 收集器(多线程标记清除算法)
- 6562、类加载器
- 6663、双亲委派
- 6767、JVM内存模型
- 6876、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
- 6979、Java对象创建过程
- 7086、Minor GC与Full GC分别在什么时候发生?
- 712、TokuDB( Fractal Tree-节点带数据)
- 726、InnoDB与MyISAM的区别
- 7311、第二范式(2nd NF- 每个表只描述一件事情)
- 7415、简单说一说drop、delete与truncate的区别
- 7520、大表如何优化?
- 7622、分库分表之后,id 主键如何处理
- 7729、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
- 7838、列对比运算符是什么?
- 7948、MySQL 支持事务吗?
- 8055、什么情况下设置了索引但无法使用
- 8161、为表中得字段选择合适得数据类型
- 8267、完整性约束包括哪些?
- 8375、主键、外键和索引的区别?
- 8483、什么是页级锁
- 856、Memcache 与 Redis 的区别都有哪些?
- 8611、热点数据和冷数据是什么
- 8715、Redis 常见性能问题和解决方案?
- 8819、Redis 常见性能问题和解决方案:
- 8926、Redis 集群方案什么情况下会导致整个集群不可用?
- 9040、Redis 如何做内存优化?
- 9147、假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
- 922、memcached 服务在企业集群架构中有哪些应用场景?
- 935、memcached 是怎么工作的?
- 9412、如何将 memcached 中 item 批量导入导出?
- 9520、什么是二进制协议,我该关注吗?
- 96MongoDB面试题
- 974、NoSQL数据库有哪些类型?
- 9815、如何执行事务/加锁?
- 9929、如果我在使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用吗?
- 10042、分析器在MongoDB中的作用是什么?
- 10156、MongoDB的优势有哪些
- 10267、MongoDB中的命名空间是什么意思?
- 10375、在MongoDB中如何除去一个数据库Collection Methods24.在MongoDB中如何除去一个数据库
- 10485、如何在集合中插入一个文档
- 10593、在MongoDB中如何排序
- 1065、Spring Framework 中有多少个模块,它们分别是什么?
- 1078、使用 Spring 有哪些方式?
- 10816、Spring IoC 的实现机制。
- 10919、spring 支持集中 bean scope?
- 11023、自动装配有哪些方式?
- 11130、@Qualifier 注解有什么用?
- 11234、spring JDBC API 中存在哪些类?
- 11340、什么是切点(JoinPoint)
- 11446、如何理解 Spring 中的代理?
- 11550、介绍一下 WebApplicationContext
- 11655、Spring中Autowired和Resource关键字的区别
- 11757、讲一下什么是Spring
- 11859、springMVC是什么
- 11965、解释Spring支持的几种bean的作用域。
- 12071、解释 AOP 模块
- 12181、有哪些不同类型的 IOC(依赖注入)方式?
- 12291、什么是 Spring 的内部 bean?
- 123102、@Autowired 注解
- 124113、解释 AOP
- 125126、什么是 Spring 的 MVC 框架?
- 1263、Spring Boot 有哪些优点?
- 1277、如何在Spring Boot启动的时候运行一些特定的代码?
- 12815、Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
- 12923、如何实现 Spring Boot 应用程序的安全性?
- 13034、什么是 AOP?
- 13140、运行 Spring Boot 有哪几种方式?
- 13249、如何重新加载Spring Boot上的更改,而无需重新启动服务器?
- 13353、Spring Boot 还提供了其它的哪些 Starter Project Options?
- 13455、创建一个 Spring Boot Project 的最简单的方法是什么?
- 13558、 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?
- 13661、什么是 Spring Data REST?
- 13765、如何使用 Spring Boot 生成一个 WAR 文件?
- 13873、如何不通过任何配置来选择 Hibernate 作为 JPA 的默认实现?
- 13976、Spring Boot 配置的默认 H2 数据库的名字是上面?为什么默认的数据库名字是 testdb?
- 14081、如何使用配置文件通过 Spring Boot 配置特定环境的配置?
- 14183、如何禁用特定的自动配置?
- 14287、SpringBoot 中静态首页默认位置可以放在哪里?
- 143Spring Cloud面试题
- 1447、什么是 Netflix Feign?它的优点是什么?
- 1459、什么是微服务
- 14611、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
- 14714、说说 RPC 的实现原理
- 14819、微服务之间是如何独立通讯的?
- 14927、springcloud断路器作用?
- 15035、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
- 1513、使用 rabbitmq 的场景
- 15210、使用 RabbitMQ 有什么好处?
- 15315、如何保证消息的可靠传输?如果消息丢了怎么办
- 15417、如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决
- 15520、什么是Publisher ?
- 15631、Fanout(广播分发)?
- 157Dubbo 面试题
- 1585、一般使用什么注册中心?还有别的选择吗?
- 15914、Dubbo 集群容错有几种方案?
- 16019、Dubbo 配置文件是如何加载到 Spring 中的?
- 16124、Dubbo 必须依赖的包有哪些?
- 16231、Dubbo是什么?
- 16342、Dubbo可以对结果进行缓存吗?
- 16430、服务读写推荐的容错策略是怎样的?
- 165MyBatis 面试题
- 1668、 模糊查询 like 语句该怎么写?
- 16713、如何获取自动生成的(主)键值?
- 16814、在 mapper 中如何传递多个参数?
- 16918、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
- 17024、什么是 MyBatis 的接口绑定?有哪些实现方式?
- 17128、MyBatis实现一对一有几种方式?具体怎么操作的 ?
- 1726、四种类型的数据节点 Znode
- 17311、ACL 权限控制机制
- 17417、zookeeper 是如何保证事务的顺序一致性的?
- 17524、Zookeeper 对节点的 watch监听通知是永久的吗?为什么不是永久的?
- 17632、分布式通知和协调
- 17739、事务编号 Zxid(事务请求计数器+ epoch)
- 17846、ZAB 协议 JAVA 实现(FLE-发现阶段和同步合并为 Recovery Phase(恢复阶段) )
- 1791、栈(stack)
- 1805、排序二叉树
- 1816、 前缀树
- 1827、红黑树
- 1838、B-TREE
- 1849、位图
- 185算法面试题
- 1863、假设今日是2015年3月1日,星期日,请算出13个月零6天后是星期几,距离现在多少天(请用代码实现,谢绝调用API方法)
- 1875、二分查找
- 1888、快速排序算法
- 1899、希尔排序算法
- 19010、归并排序算法
- 19111、桶排序算法
- 19213、剪枝算法
- 19317、AES
- 19419、CRC
- 19521、更多算法练习
- 1963、elasticsearch 索引数据多了怎么办,如何调优,部署
- 1976、详细描述一下 Elasticsearch 搜索的过程?
- 1989、Elasticsearch 是如何实现 Master 选举的?
- 19913、详细描述一下 Elasticsearch 更新和删除文档的过程。
- 20017、对于 GC 方面,在使用 Elasticsearch 时要注意什么?
- 20122、介绍一下你们的个性化搜索方案?
- 202Kafka 面试题
- 2033、数据文件分段 segment(顺序读写、分段命令、二分查找)
- 2048、Consumer Group
- 20513、讲一下主从同步
- 20619、消费者如何不自动提交偏移量,由应用提交?
- 207微服务 面试题
- 2083、微服务有哪些特点?
- 2095、微服务架构如何运作?
- 2108、在使用微服务架构时,您面临哪些挑战?
- 21113、什么是无所不在的语言?
- 21220、Spring Cloud 解决了哪些问题?
- 21328、双因素身份验证的凭据类型有哪些?
- 21434、什么是端到端微服务测试?
- 21540、我们如何进行跨功能测试?
- 21646、什么是持续集成(CI)?
- 2173、怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当
- 2188、建立软链接(快捷方式),以及硬链接的命令
- 21914、复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?
- 22025、怎么查看系统支持的所有信号?
- 22134、查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
- 22241、如果你的助手想要打印出当前的目录栈,你会建议他怎么做?