1.Redis常见面试题 2.什么是Redis? Redis是一个基于C语言编写的开源的高性能非关系型BoSql的键值对数据库 Redis可以存储键和5种不同类型的值之间的映射.键类型只能为字符串.值可以为字符串,集合,有序集合,列表,哈希(散列表) 与传统数据库不同的是,Redis存储在内存中,所以读写速率非常快,.应用于缓存,每秒10万次读写
是性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。 3.Redis都有哪些优缺点? 优点: 读写性能优异, 支持数据持久化. 支持事务 数据结构丰富 支持主从复制 缺点: 数据库容量受到物理容量的限制,不能作为海量数据的高性能存储 Redis不具备自动容错和恢复功能 主机宕机,从机数据为同步,导致数据不一致 4.为什么要用redis?为什么要用缓存? 高性能: 假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在数缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可
高并发 直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。 5.为什么要用 Redis 而不用 map/guava 做缓存? 缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者 guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。 使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持 redis 或 memcached服务的高可用,整个程序架构上较为复杂 6.Redis为什么这么快? 完全基于内存.数据在内存, 数据结构简单,对数据的操作也简单 单线程,避免了不必要的上下文切换和竞争条件.也避免了多进程多线程切换而消耗CPU,不用考虑各种锁的问题 使用多路IO复用模型,非阻塞IO 7.Redis有哪些数据类型? 8.Redis的应用场景?
|