精选 21道 Redis 最常问面试题!收藏一波 !

  • 1、什么是redis?

  • 2、Reids的特点

  • 3、使用redis有哪些好处?

  • 4、redis相比memcached有哪些优势?

  • 5、Memcache与Redis的区别都有哪些?

  • 6、redis适用于的场景?

  • 7、redis的缓存失效策略和主键失效机制

  • 8、为什么redis需要把所有数据放到内存中?

  • 9、Redis是单进程单线程的

  • 10、redis的并发竞争问题如何解决?

  • 11、redis常见性能问题和解决方案

  • 12、redis事物的了解CAS(check-and-set 操作实现乐观锁 )?

  • 13、WATCH命令和基于CAS的乐观锁?

  • 14、使用过Redis分布式锁么,它是什么回事?

  • 15、假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?

  • 16、使用过Redis做异步队列么,你是怎么用的?

  • 17、如果有大量的key需要设置同一时间过期,一般需要注意什么?

  • 18、Redis如何做持久化的?

  • 19、Pipeline有什么好处,为什么要用pipeline?

  • 20、Redis的同步机制了解么?

  • 21、是否使用过Redis集群,集群的原理是什么?

1、什么是redis?

redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库

2、Reids的特点

Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。

Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。

Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

3、使用redis有哪些好处?

3.1 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

3.2 支持丰富数据类型,支持string,list,set,sorted set,hash

String

常用命令 :set/get/decr/incr/mget等;

应用场景 :String是最常用的一种数据类型,普通的key/value存储都可以归为此类;

实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr、decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。

Hash

常用命令 :hget/hset/hgetall等

应用场景 :我们要存储一个用户信息对象数据,其中包括用户ID、用户姓名、年龄和生日,通过用户ID我们希望获取该用户的姓名或者年龄或者生日;

实现方式:Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口。如图所示,Key是用户ID, value是一个Map。这个Map的key是成员的属性名,value是属性值。这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field),也就是通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据。当前HashMap的实现有两种方式:当HashMap的成员比较少时Redis为了节省内存

你可能感兴趣的:(redis,数据库,缓存,java,程序人生)