Redis知识点

本文深入探讨了Redis作为一个内存数据库的特性,包括其高速性能、丰富的数据类型、支持事务等优点。对比其他数据库,Redis在数据持久化、数据类型支持上展现出优势。同时,文章详细阐述了Redis的常见性能问题,如快照带来的阻塞、大文件持久化的影响等,并介绍了数据淘汰策略。最后,讨论了Redis在会话缓存、全页缓存等场景的应用以及集群配置和复制策略。
摘要由CSDN通过智能技术生成
1、什么是Redis?

Redis是一个基于内存的高性能Key-Value数据库。

数据类型可以存储的值操作
String字符串、整数、浮点数对整个字符串或字符串的其中一部分执行操作,
对整数和浮点数执行自增或自减操作
List列表从两端压入或者弹出元素
对单个或者多个元素进行修剪
只保留一个范围内的元素
Set无序集合添加、获取、移除单个元素
检查一个元素是否存在于集合中
计算交集、并集、差集
从集合中随机获取元素
ZSet有序集合添加、获取、删除元素
根据分值范围或者成员来获取元素
计算一个键的排名
Hash包含键值对的无序散列表添加、获取、移除单个键值对
获取所有键值对
检查摸个键是否存在
2、Redis的特点

Redis本质上是一个Key-Value类型的数据库, 很像Memcached,整个数据库通通加载在内存当中进行操作,

定期通过异步操作把数据库数据flush到硬盘上进行保存。

因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-Value数据库。

Redis的出色之处不仅仅是性能,Redis最大的魅力在于支持保存多种数据结构,此外单个value的最大限制是1GB,不像Memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。

例如可以用RedisList来做FIFO双向链表,实现一个轻量级的高性能消息队列服务,用RedisSet可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置Expire时间,因此也可以被当做一个功能加强版的Memcached来用。

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

3、使用Redis有哪些好处?
  • 速度快

    因为数据存在内存中,类似于`HashMap`, `HashMap`的优势就是查找和操作的时间复杂度都是`O(1)`
    
  • 支持丰富的数据类型

    支持`String`、`List`、`Set`、`Sorted Set`、`Hash`
    
  • 支持事务

    原子性、一致性、隔离性、持久性
    
  • 丰富的特性

    可用于缓存、消息,按`key`设置过期时间,过期后将会自动删除
    
4、Redis相比Memcached有哪些优势?
  • Memcached所有的值都是简单的string类型,Redis支持更为丰富的数据类型
  • Redis的速度比Memcached快很多
  • Redis支持持久化其数据
5、RedisMemcached的区别有哪些?
  • 存储方式

    `Memcached`把数据全部存在内存中,断电后会丢失所有数据,数据不能超过内存大小
    `Redis`将部分数据存在硬盘中,可以保证数据的持久性。
    
  • 数据支持类型

    `Memcached`对数据类型支持相对简单,
    `Redis`支持丰富的数据类型。
    
  • 使用不同的底层模型

    底层实现方式不同,以及与客户端之间通信的应用协议不同。
    `Redis`直接构建了`VM`机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
    
6、Redis常见性能问题
  • Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响较大,会间断性暂停服务。
  • Master AOF持久化, AOF文件过大会影响Master重启的恢复速度。
  • Master调用BGREWRITEAOF重写AOF文件时会占用大量的CPU和内存资源,导致服务Load过高,出现短暂服务暂停现象。
  • Redis主从复制的性能问题,为了主从复制的速度和连接的稳定性,SlaveMaster最好在同一个局域网内。
7、Redis数据淘汰策略
  • volatile-lru

    从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
    
  • volatile-ttl

    从已设置过期时间的数据集中挑选将要过期的数据淘汰
    
  • volatile-random

    从已设置过期时间的数据集中任意选择数据淘汰
    
  • allkeys-lru

    从数据集中挑选最近最少使用的数据淘汰
    
  • allkeys-random

    从数据集中任意选择数据淘汰
    
  • no-enviction

    禁止驱逐数据
    
8、Redis适合场景
  • 会话缓存Session Cache
  • 全页缓存FPC
  • 队列
  • 排行榜/计数器
  • 发布/订阅
9、Redis集群
  • Redis主从复制模型

    为了使在部分节点失败或大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有`N-1`个副本。
    
  • Redis集群的复制

    异步复制。
    
  • Redis集群会议欧写操作丢失吗?

`Redis`并不能保证数据的强一致性,这意味着在实际中集群在特定的条件下可能会丢失写操作。
  • Redis集群最大节点个数

    2^14=2**14=16384个
    
  • Redis哈希槽

    `Redis`集群没有使用一致性在`Hash`,而是引入了哈希槽的概念,`Redis`有16384个哈希槽,每个`Key`通过`CRC16`校验后对16384取模来决定防止哪个槽,集群的每个节点负责一部分`Hash`槽。
    
  • Redis集群如何选择数据库

    `Redis`集群目前无法做数据库选择,默认在0数据库
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值