• Redis基础知识解答


    1.简述redis以及优缺点

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

    优点:

    1)读写性能极高, Redis能读的速度是110000次/s,写的速度是81000次/s。
    2)支持数据持久化,支持AOF和RDB两种持久化方式。
    3)支持事务, Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
    4)数据结构丰富,除了支持string类型的value外,还支持hash、set、zset、list等数据结构。
    5)支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
    6)丰富的特性 – Redis还支持 publish/subscribe,、通知,、key 过期等特性。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    缺点:

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

    2.redis很快的原因

    1)内存存储。数据存在内存中,没有磁盘IO上的开销。

    2)单线程实现( Redis 6.0以前)。避免了多个线程之间线程切换和锁资源争用的开销。(单线程是指一个线程处理所有网络请求)

    3)非阻塞IO。使用多路复用IO技术,将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间。

    4)优化的数据结构。有诸多可以直接应用的优化数据结构的实现,应用层可以直接使用原生的数据结构提升性能。

    5)使用底层模型不同。建了虚拟内存机制 ,而不是系统调用系统函数。

    3.redis与memcached的比较

    特点memcachedredis
    读写高性能高性能
    单/多线程读写多线程读写性能更强单线程读写性能更强
    使用多用户并发,低访问少量用户,多次访问
    数据类型单一(字符串)字符串、哈希表、集合、有序集合、列表
    数据持久化不支持支持RDB和AOF持久化
    结构多核单核
    数据操作在客户端操作,客户端分布式集群,没有原生的集群模式支持服务端操作,主从同步机制,以及 Cluster集群部署能力,能够提供高可用服务
    内存使用效率仅key-value存储时,更高hash结构时,更高
    网络IO模型多线程非阻塞IO模型单线程多路IO复用模型

    4.Redis使用场景

    1、缓存

    几乎是所有中大型网站都在用的必杀技,合理的利用缓存不仅能够提升网站访问速度,还能大大降低数据库的压力。
    
    • 1

    2、排行榜

    3、计数器

    如电商网站商品的浏览量、视频网站视频的播放数等。
    
    • 1

    4、分布式会话

    当应用增多相对复杂的系统中,一般都会搭建以Redis等内存数据库为中心的session服务,session不再由容器管理,而是由session服务及内存数据库管理。
    
    • 1

    5、分布式锁

    利用Redis的setnx功能来编写分布式的锁。
    
    • 1

    6、 社交网络

    点赞、踩、关注/被关注、共同好友等社交网站的基本功能,Redis提供的哈希、集合等数据结构能很方便的的实现这些功能。
    
    • 1

    7、最新列表

    8、消息系统

    大型网站的必用中间件,如ActiveMQ、RabbitMQ、Kafka等流行的消息队列中间件,主要用于业务解耦、流量削峰及异步处理实时性低的业务。Redis提供了发布/订阅及阻塞队列功能,能实现一个简单的消息队列系统。另外,这个不能和专业的消息中间件相比。
    
    • 1

    5.Redis的单线程和多线程,以及使用原因。

    首先,Redis在4.0版本时引入多线程处理异步任务,此举主要针对那些非常耗时的命令。6.0版本时,正式在网络模型中实现IO多线程。所以,在Redis 6.0之前,其核心网络模型使用的是单线程。

    其次,互联网的IO瓶颈十分明显,6.0应用多线程原因如下图。

    在这里插入图片描述

    最后,redis6.0以前使用单线程,可以避免过多的上下文切换开销;避免同步机制的开销;简单可维护。

    6.Redis过期键的删除策略

    Redis的过期策略和淘汰策略

    7.Redis的持久化机制

    redis持久化之RDB和AOF比较

  • 相关阅读:
    DM-VERITY流程分析
    品达通用_16. 数据模型_20. 通用权限系统企业应用指南
    IoC 思想和实现
    菜谱小程序源码免费分享【推荐】
    计算机网络:流量控制与可靠传输机制
    堆的实现与应用
    防水蓝牙耳机哪个好?防水音质好的蓝牙耳机推荐
    FPGA解析B码----连载4
    【深入浅出玩转FPGA学习4----漫谈状态机设计】
    有向图缩点题集
  • 原文地址:https://blog.csdn.net/oldboy1999/article/details/126229252