前言
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
RedisRedis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。[1]
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
接下来给大家介绍阿里P7总结出的两大技术文档+面试题和答案+视频:Redis核心原理与应用实践、Redis实战、面试题及答案技术文档,1.75GRedis学习视频,希望大家能够喜欢!
Redis核心原理与应用实践
本文档主要讲解笔者从实战中摸索总结的Redis最常用最核心知识点,但限于篇幅和精力,并没有涵盖Redis 全部的内容知识点,比如Redis 内置的lua 脚本引擎就完全没有提到。之所以不讲,是因为在平时的工作中确实从来没有使用过,它就好比关系数据库的存储过程,虽然功能很强大,但是确实很少使用,而且也不易维护,所以就不推荐读者使用了。
对于很多小企业来说,本小册的很多内容都是用不上的,因为系统的并发量没有到一定的量级,这些高级功能根本没必要使用。不过机会总是留给那些有准备的孩子们,如果突然有一天流量涨上来了,Redis的这些稀有的高级功能势必能立即派上用场。
读者们肯定也注意到,小册所有的标题都有使用特定的成语来描述。这些成语不是随便写的,而是精确考量了成语的含义和技术点的相关性精心挑选出来的,相信读者在理解了每个小节的内容之后,肯定可以明白内容和成语含义的相关性。之所以要使用成语也是为了制造悬念,吸引读者探究为什么这个技术点会和这个成语相关。老钱的语文水平不高,在选择成语时,反复使用了搜索引擎。如果读者找到了更贴切的成语,一定要及时在评论区留言告知。如果被采纳,会考虑福利反馈。固好了,深入理解Redis 的学习之旅正式开始。
Redis实战
本文档深入浅出地介绍了Redis 的5种数据类型,并通过多个实用示例展示了Redis 的用法。除此之外,书中还讲述了Redis的优化方法以及扩展方法,对于学习和使用Redis来说不可多得的参考文档。
本文档共由三个部分组成。第一部分对Redis进行了介绍,说明了Redis 的基本使用方法、它拥有的5种数据结构以及操作这5种数据结构的命令,并讲解了如何使用Redis去构建文章聚合网站、cookie、购物车、网页缓存、数据库行缓存等- - 系列程序。第二部分对Redis命令进行了更详细的介绍,并展示了如何使用Redis去构建更为复杂的辅助工具和应用程序,并在最后展示了如何使用Redis去构建一个简单的社交网站。第三部分对Redis用户经常会遇到的一些问题进行了介绍,讲解了降低Redis内存占用的方法、扩展Redis性能的方法以及使用Lua语言进行脚本编程的方法。
本文档既涵盖了命令用法等人门主题,也包含了复制、集群、性能扩展等深人主题,所以无论是Redis新手还是有一定经验的Redis使用者,应该都能从本书中获益。本文档面向具有基本数据库概念的读者,读者无需预先了解任何NoSQL知识,也不必具备任何Redis使用经验。
Redis面试题及答案
1、什么是 Redis?简述它的优缺点?
2、Redis 与 memcached 相比有哪些优势?
3、Redis 支持哪几种数据类型?
4、Redis 主要消耗什么物理资源?
5、Redis 有哪几种数据淘汰策略?
6、Redis 官方为什么不提供 Windows 版本?
7、一个字符串类型的值能存储最大容量是多少?
8、为什么 Redis 需要把所有数据放到内存中?
9、Redis 集群方案应该怎么做?都有哪些方案?
10、Redis 集群方案什么情况下会导致整个集群不可用?
11、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?
12、Redis 有哪些适合的场景?
13、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
14、Redis 和 Redisson 有什么关系?
15、Jedis 与 Redisson 对比有什么优缺点?
16、说说 Redis 哈希槽的概念?
17、Redis 集群的主从复制模型是怎样的?
18、Redis 集群会有写操作丢失吗?为什么?
19、Redis 集群之间是如何复制的?
20、Redis 集群最大节点个数是多少?
21、Redis 集群如何选择数据库?
22、Redis 中的管道有什么用?
23、怎么理解 Redis 事务?
24、Redis 事务相关的命令有哪几个?
25、Redis key 的过期时间和永久有效分别怎么设置?
26、Redis 如何做内存优化?
27、Redis 回收进程如何工作的?
28.加锁机制
29.锁互斥机制
30.watch dog 自动延期机制
31.可重入加锁机制
32.释放锁机制
33.上述 Redis 分布式锁的缺点
34.使用过 Redis 分布式锁么,它是怎么实现的?
35.使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?
36.什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
37.redis 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的memcached 效率要高?
38.redis 主从复制如何实现的?redis 的集群模式如何实现?redis 的 key 是如何寻址的?
39.使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?
40.知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?
41.redis 过期策略都有哪些?LRU 算法知道吗?写一下 java 代码实现?
42.缓存穿透、缓存击穿、缓存雪崩解决方案?
43.在选择缓存时,什么时候选择 redis,什么时候选择 memcached
44.缓存与数据库不一致怎么办
45.主从数据库不一致如何解决
46.Redis 常见的性能问题和解决方案
47.Redis 的数据淘汰策略有哪些
48.Redis 当中有哪些数据结构
49.假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
50.使用 Redis 做过异步队列吗,是如何实现的
51.Redis 如何实现延时队列