关于java:锁屏面试题百日百刷Redis篇一

30次阅读

共计 3617 个字符,预计需要花费 10 分钟才能阅读完成。


锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题 app、小程序现已上线,官网地址:https://www.demosoftware.cc/#…。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步,吊打面试官! 接下来的是今日的面试题:

====Redis 的特点?

Redis 是由意大利人 Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis 全称为:Remote Dictionary Server(近程数据服务),该软件应用 C 语言编写,典型的 NoSQL 数据库服务器,Redis 是一个 key-value 存储系统,它反对丰盛的数据类型,如:string、list、set、zset(sorted set)、hash。
Redis 实质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个 数据库通通加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘 上进行保留。因为是纯内存操作,Redis 的性能十分杰出,每秒能够解决超过 10 万次读写操作,是已知性能最快的 Key-Value DB。
Redis 的杰出之处不仅仅是性能,Redis 最大的魅力是反对保留多种数据结构,此外单 个 value 的最大限度是 1GB,不像 memcached 只能保留 1MB 的数据,另外 Redis 也能够对存入的 Key-Value 设置 expire 工夫。
Redis 的次要毛病是数据库容量受到物理内存的限度,不能用作海量数据的高性能读写,因而 Redis 适宜的场景次要局限在较小数据量的高性能操作和运算上。

==== 为什么 redis 须要把所有数据放到内存中?

Redis 为了达到最快的读写速度将数据都读到内存中,并通过异步的形式将数据写入磁盘。所以 redis 具备疾速和数据长久化的特色。如果不将数据放在内存中,磁盘 I/O 速度为重大影响 redis 的性能。在内存越来越便宜的明天,redis 将会越来越受欢迎。如果设置了最大应用的内存,则数据已有记录数达到内存限值后不能持续插入新值。

====Redis 常见的性能问题都有哪些?如何解决?

(1)、Master 写内存快照,save 命令调度 rdbSave 函数,会阻塞主线程的工作,当快照比拟大时对性能影响是十分大的,会间断性暂停服务,所以 Master 最好不要写内存快照。
(2)、Master AOF 长久化,如果不重写 AOF 文件,这个长久化形式对性能的影响是最小的,然而 AOF 文件会一直增大,AOF 文件过大会影响 Master 重启的复原速度。Master 最好不要做任何长久化工作,包含内存快照和 AOF 日志文件,特地是不要启用内存快照做长久化, 如果数据比拟要害,某个 Slave 开启 AOF 备份数据,策略为每秒同步一次。
(3)、Master 调用 BGREWRITEAOF 重写 AOF 文件,AOF 在重写的时候会占大量的 CPU 和内存资源,导致服务 load 过高,呈现短暂服务暂停景象。
(4)、Redis 主从复制的性能问题,为了主从复制的速度和连贯的稳定性,Slave 和 Master 最好在同一个局域网内。

====Redis 最适宜的场景有哪些?
(1)、会话缓存(Session Cache)
(2)、全页缓存(FPC)
(3)、队列
(4)、排行榜 / 计数器
(5)、公布 / 订阅

====Memcache 与 Redis 的区别都有哪些?
(1)、存储形式不同,Memcache 是把数据全副存在内存中,数据不能超过内存的大小,断电后数据库会挂掉。Redis 有局部存在硬盘上,这样能保证数据的持久性。
(2)、数据反对的类型不同 memcahe 对数据类型反对绝对简略,redis 有简单的数据类型。
(3)、应用底层模型不同 它们之间底层实现形式 以及与客户端之间通信的利用协定不一样。Redis 间接本人构建了 VM 机制,因为个别的零碎调用零碎函数的话,会节约肯定的工夫去挪动和申请。
(4)、反对的 value 大小不一样 redis 最大能够达到 1GB,而 memcache 只有 1MB。

====Redis 有哪几种数据结构?以及如何应用?

Redis 的数据结构有五种,别离是:
String——字符串
String 数据结构是简略的 key-value 类型,value 不仅能够是 String,也能够是数字(当数字类型用 Long 能够示意的时候 encoding 就是整型,其余都存储在 sdshdr 当做字符串)。
应用:get、set、del、incr、decr 等
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
“world”
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> get counter
“2”
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> get counter
“3”
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
“103”
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
“102”
Hash——字典
在 Memcached 中,咱们常常将一些结构化的信息打包成 hashmap,在客户端序列化后存储为一个字符串的值(个别是 JSON 格局),比方用户的昵称、年龄、性别、积分等。
应用:所有 hash 的命令都是 h 结尾的 hget、hset、hdel 等
127.0.0.1:6379> hset user name1 hao
(integer) 1
127.0.0.1:6379> hset user email1 mailto:hao@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) “name1”
2) “hao”
3) “email1”
4) “hmailto:ao@163.com”
127.0.0.1:6379> hget user user
(nil)
127.0.0.1:6379> hget user name1
“hao”
127.0.0.1:6379> hset user name2 xiaohao
(integer) 1
127.0.0.1:6379> hset user email2 mailto:xiaohao@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) “name1”
2) “hao”
3) “email1”
4) “hmailto:ao@163.com”
5) “name2”
6) “xiaohao”
7) “email2”
8) “xmailto:iaohao@163.com”
List——列表
List 说白了就是链表(redis 应用双端链表实现的 List),置信学过数据结构常识的人都应该能了解其构造。
应用:
lpush+lpop=Stack(栈)
lpush+rpop=Queue(队列)
lpush+ltrim=Capped Collection(无限汇合)
lpush+brpop=Message Queue(音讯队列)
127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) “mem”
2) “ls”
3) “ll”
4) “2”
5) “1”
Set——汇合
Set 就是一个汇合,汇合的概念就是一堆不反复值的组合。利用 Redis 提供的 Set 数据结构,能够存储一些汇合
应用:命令都是以 s 结尾的 sadd、srem、scard、smembers、sismember 性的数据。
127.0.0.1:6379> sadd myset hao hao1 xiaohao hao
(integer) 3
127.0.0.1:6379> SMEMBERS myset
1) “xiaohao”
2) “hao1”
3) “hao”
127.0.0.1:6379> SISMEMBER myset hao
(integer) 1
ZSet——有序汇合
和 Set 相比,Zset 是将 Set 中的元素减少了一个权重参数 score,使得汇合中的元素可能按 score 进行有序排列,
应用:有序汇合的命令都是 以 z 结尾 zadd、zrange、zscore
127.0.0.1:6379> zadd myscoreset 100 hao 90 xiaohao
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) “xiaohao”
2) “hao”
127.0.0.1:6379> ZSCORE myscoreset hao
“100”

更多面试题可关注 ”demo 锁屏面试题 ” 公众号通过小程序或 App 获取面试题和学习资源

正文完
 0