Redis 面试题
Redis 是一个缓存数据库,与传统数据库不同的是 Redis 的数据存储于内存中,所以读写速度非常快,被广泛应用于数据缓存。Redis 提供了丰富的数据类型来支持不同的业务场景。除此之外,Redis 支持事务、持久化、LUA脚本、LRU驱动事件、多种集群方案等。
对于软件开发人员,经常会把 Redis 作为数据库数据的缓存,所以需要对 Redis 的基本原理、数据类型、常用指令 以及方案设计非常熟悉。
对于运维人员,需要熟练掌握 Redis 的安装使用、集群设计、数据同步以及常用指令等。
一、基本原理
1. 为什么要使用 Redis 作为缓存
主要从“高性能”和“高并发”这两点来看待这个问题。
1、高性能
用户从数据库中读取数据的过程比较慢,主要原因是从数据库文件或者从少量的数据库缓存中读取数据的效率慢,而且还需要耗费一定的时间执行查询。如果将该用户访问的数据存在内存中,这样下一次再访问这些数据的时候就可以直接从内存缓存中获取,速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可。
2、高并发
直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以我们把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而无需经过数据库,因此可以支持更多的并发操作。
2. Redis 和 Memcached 的区别
Redis 和 Memcached 的区别主要有四点:
- Redis 支持更丰富的数据类型: Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 List,Set,Zset,Hash 等数据结构的存储。Memcache支持简单的数据类型 String。
- Redis 支持数据的持久化。 Redis 可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。而 Memecache 把数据全部存在内存之中,重启后数据丢失,重启后需要重新加载。
- Redis 支持集群模式 Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 Redis 目前是原生支持 cluster 模式的.
- Redis使用单线程的多路 IO 复用模型;Memcached 是多线程,非阻塞IO复用的网络模型。
下一章:Go区块链开发面试题
Golang 区块链面试题:区块链技术已经被广泛应用于金融、物联网、物流、公共服务、数字版权、保险等领域。从技术开发层面,区块链主要以 Go 语言和 C++ 语言为主,比如 Eth、Fabric 都是使用 Go 语言开发。目前国内大部分区块链开发也以 Go 语言开发为主,因此如果想找一个区块链相关的工作,需要掌握好 Go 语言的基础知识,下面为大家分享一些Go语言常见基础面试题。