Redis-面试热点

96

一、使用Redis的好处
1、速度快,数据存储在内存中,查找和操作的时间复杂度都是0(1)
2、支持丰富数据类型
3、支持事务,操作都是原子性(要么全部执行,要么全不执行)
4、丰富的特性:可用于缓存、消息队列、按key设置timeout
二、redis相比memcached有什么优势
1、memcached所有的值都是简单的字符串,redis作为其代替者,支持更丰富的数据类型
2、redis速度比memcached快很多
3、redis可以持久化其数据
三、redis常见性能问题和解决方案
1、Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件
2、如果数据比较重要,某个Slave开启AOF备份数据,策略为每秒同步一次
3、为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内
4、尽量避免在压力很大的主库上增加从库
5、主从复制不要用图状结构,用单向链表结构更为稳定(这样的结构更方便解决单点故障问题,实现Slave对Master的替换,如果Master挂了,可以立即启用Slave做Master)
四、如何保证 Redis中数据都是热点数据
相关知识:redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
redis提供6种数据淘汰策略:
1、voltile-lru:从已设置过期时间的数据集(service.db[i].expires)中挑选最近最少使用的数据淘汰。
2、volatile-ttl:从已设置过期时间的数据集(service.db[i].expires)中挑选将要过期 数据淘汰。
3、volatile-random:从已设置过期时间的数据集(service.db[i].expires)中任意选择数据淘汰。
4、allkeys-lru:从数据集(service.db[i].dict)中挑选最少使用的数据淘汰。
5、allkeys-random:从数据集(service.db[i].dict)中任意选择数据淘汰。
6、no-enviction(驱逐):禁止驱逐数据
五、Memcache与Redis的区别有哪些
1、存储方式区别
Memcache存储内存,数据不能超过内存大小,断电挂掉;
Redis有部分存储在硬盘,保持数据持久性。
2、支持数据类型区别
Memcache支持类型相对简单
Redis支持更为复杂的数据类型。
3、使用底层模型不同
他们之间的底层实现方式以及客户端之间通信的应用协议不一样
Redis直接构建了自己的VM机制,因为一般的系统调用和系统函数的话,会浪费一定的时间去移动和请求。
4、value大小
redis最大可达到1GB
memcached最大1MB
六、Redis最适用的场景
1、会话缓存(Session Cache)
最常用就是使用Redis做会话缓存。Redis相比与其他存储的优势在于可持久化。
2、全页缓存(FPC)
除基本的会话token之外,Redis还提供简便的FPC平台。即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度下降。
3、队列
Redis在内存存储引擎领域的最大一个优点就是提供list和set操作,这使得Redis能做为一个很好的消息队列平台来使用。
4、排行榜/计数器
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(set)和有序集合(Sorted Set)也使得我们在执行这些操作时变得非常简单,Redis只是正好提供了这两种数据结构。
5、发布/订阅
Redis自带的发布/订阅功能可使用场景非常多。可以在社交网络连接中使用,还可以作为基于发布/订阅的脚本触发器,甚至可以用来建立聊天系统。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值