Redis1 晨考题
1.Redis 是什么 ?
redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 的内存数据库,并提供多种语言的 API。
2.NOSQL 是什么 ?出现的目的和意义是什么 ?
NoSQL 泛指非关系型的数据库,NoSQL 即 Not-Only SQL,它可以作为关系型数据库的良好补充。
NoSQL 数据库的产生就是为了解决大规模的数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
3.Redis 的优点和缺点 ?
优点:(1)性能极高速度快,因为数据存在内存中,Redis 能读的速度是110000次/s,写的速度是81000次/s 。
(2)丰富的数据类型:Redis 支持 String,Hash,List,Set 以及 Ordered Set 数据类型的操作。
(3)原子性:Redis 的所有操作都是原子性的,意思就是要么成功执行,要么失败完全不执行。
(4)丰富的特性:可用于缓存,通知,按 key 设置过期时间,过期后将会自动删除。
(5)高速读写:Redis 使用自己实现的分离器,代码量很短,没有使用 lock,因此效率非常高。
(6)Redis 的命令是以单线程执行的。
缺点:
(1)持久化:Redis直接将数据存储到内存中,如果要将数据保存到磁盘上,Redis 可以使用两种方式实现
持久化过程:快照(RDF):能够在指定的时间间隔内对数据进行快照存储;追加式文件(AOF):记录每次对服
务器写的操作, 当服务器重启的时候会重新执行这些命令来恢复原来的数据,AOF 命令以 Redis 协议追加保存每
次写的操作到文件末尾。
(2)代价较高。
(3)回复速度慢。
(4)占用内存过高。
4.Redis 有哪些应用场景 ?(举例即可)
(1)会话缓存。
(2)排行榜和计数器。
(3)分布式会话和分布式锁。
(4)社交网络和最新列表。
5.Redis 在什么情况下会进行持久化操作 ?
比如:当系统重启或系统关闭,服务器断电或宕机时,这时如果只是将数据放在内存中,那么就会造成数据的丢
失,所以应对这种异常的情况,就要对数据进行持久化操作。
6.Redis 中为什么需要持久化机制 ?
因为 Redis 是一个内存数据库,数据都是缓存在内存中的,当系统重启或系统关闭,服务器断电或宕机时,缓存
在内存中的数据都会消失殆尽,再也找不回来了,所以为了让数据能够长期保存,就要将 Redis 放在缓存中的数
据做持久化存储。
7.Redis 持久化触发条件有哪些 ?
(1)RDB 定时快照方式:包括手动触发和自动触发。
RDB 的手动触发:通过 redis 的 save 命令和 bgsave 命令,均可以生成 RDB 文件。
RDB 的自动触发:在配置文件中通过 save m n,指定当 m 秒内发生 n 次变化时,会触发 bgsave 命令。
(2)AOF 基于语句追加方式:也包括手动触发和自动触发。
AOF 的手动触发:使用 bgrewriteaof 命令。
AOF 的自动触发:与 RDB 的自动触发相同,配置在 redis.conf 里面。
8.Redis 内存维护策略 ?
(1)为数据设置超时时间。
即:设置过期时间
expire key time(以秒为单位)--这是最常用的方式
setex(String key, int seconds, String value)--字符串独有的方式
(2)采用 LRU 算法动态将不用的数据删除。
对于在内存中但又不用的数据块(内存块)叫做 LRU,操作系统会根据哪些数据属于 LRU 而将其移出内存,从而
腾出空间来加载另外的数据。