作为一名Java程序面试过程中会被问到Redis相关的问题,这里对其常见问题做了梳理。
Redis是一个使用C语言编写的开源高性能非关系型的键值对数据库。Redis可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,只支持五种数据类型:字符串、列表、集合、散列表、有序集合。
Redis相关常见面试题
1、Redis是什么?
Redis本质上是一个Key-Value类型的内存数据库,很像,整个数据库统统加载在内存当中进行操作memcached与redis区别,定期通过异步操作把数据库数据flush到硬盘上进行保存。
纯内存操作,Redis的性能非常出色memcached与redis区别,每秒可以处理超过10万次读写操作,是已知性能最快的Key-。Redis支持保存多种数据结构,此外单个value的最大限制是1GB,不像只能保存1MB的数据,Redis可以用来实现很多有用的功能。
2、Redis相比有哪些优势?
所有的值均是简单的字符串,redis作为其替代者支持更为丰富的数据类型;redis的速度比快很多;redis可以持久化其数据
3、Redis有哪几种数据淘汰策略?
、-lru、-、-、-ttl五种淘汰策略:
(1):返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令;
(2)-lru:尝试回收最少使用的键(LRU),使得新添加的数据有空间存放;
(3)-lru:尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放;
(4)-:回收随机的键使得新添加的数据有空间存放;
(5)-:回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
-ttl:回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放
4、Redis所有数据放到内存中的原因?
Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度会严重影响redis性能。
5、Redis适合在哪些场景使用?
(1)会话缓存
最常用的一种使用Redis的情景是会话缓存。用Redis缓存会话比其他存储的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,还会这样吗?随着Redis这些年的改进很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台也提供Redis插件。
(2)全页缓存
除基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似PHP本地FPC。
(3)队列
Reids在内存存储引擎领域的一-大优点是提供list和set操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如)对list的push/pop操作。
如果快速地在中搜索“",马上就能找到大量的开源项目,这些项目的目的就是利用Redis创建非常好的后端工具,以满足各种队列需求。例如,有一个后台就是使用Redis作为,可以从这里去查看。
(4)排行榜/计数器
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合()也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。所以要从排序集合中获取到排名最靠前的10个用户-我们称之为“"。