redis总结

寂静花开 寂静花开     2022-12-09     298

关键词:

目 录

什么是Redis

Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。

Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

redis每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外redis也常用来做分布式锁。

Redis为什么快?

  1. 完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。
    同时数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是O(1);
  2. 数据结构简单,对数据操作也简单,Redis 中的数据结构是专门进行设计的;
  3. 采用单线程。
    避免了不必要的上下文切换和竞争条件,不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;
  4. 使用多路 I/O 复用模型,非阻塞 IO;
  5. 使用底层模型不同。
    它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis 直接自己构建了 VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;

Redis有哪些常用的数据类型?

Redis主要有5种数据类型,包括String,List,Set,Zset,Hash
String (字符串、整数或者浮点数): 做简单的键值对缓存
List 列表: 存储一些列表型的数据结构
set 无序集合: 交集、并集、差集的操作
hash 包含键值对的无序散列表: 结构化的数据,比如一个对象
zset 有序集合 : 去重但可以排序

Redis RDB和AOF持久化的区别,如何选择?

什么是Redis持久化?

持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。

Redis 的持久化机制是什么?

Redis 提供两种持久化机制 RDB(默认) 和 AOF 机制:

  • RDB:Redis DataBase,把当前数据生成快照保存在硬盘上。
    RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义的周期。

  • AOF:Append Only File持久化,记录每次对数据的操作到硬盘上。
    将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志中文件恢复数据。

RDB和AOF的优缺点

  • AOF文件比RDB更新频率高,优先使用AOF还原数据。
  • AOF比RDB更安全也更大
  • RDB性能比AOF好
  • 如果两个都配了优先加载AOF

如何选择

1、一般来说, 如果想达到足以媲美PostgreSQL的数据安全性,应该同时使用两种持久化功能。在这种情况下,当 Redis 重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。

2、如果可以承受数分钟以内的数据丢失,那么你可以只使用RDB持久化。
3、只使用AOF持久化,但并不推荐。因为定时生成RDB快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比AOF恢复的速度要快,除此之外,使用RDB还可以避免AOF程序的bug。

4、如果只希望数据在服务器运行的时候存在,可以不使用任何持久化方式。

如何解决缓存击穿、缓存穿透、雪崩问题?

缓存击穿

缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。
和缓存雪崩不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。

解决方案

  1. 设置热点数据永远不过期。
  2. 加互斥锁

缓存穿透

对某个一定不存在的数据进行请求,该请求将会穿透缓存到达数据库。

缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。

解决方案

  1. 对这些不存在的数据缓存一个空数据;
  2. 对这类请求进行过滤。

缓存雪崩

指的是由于数据没有被加载到缓存中,或者缓存数据在同一时间大面积失效(过期),又或者缓存服务器宕机,导致大量的请求都到达数据库。

在有缓存的系统中,系统非常依赖于缓存,缓存分担了很大一部分的数据请求。当发生缓存雪崩时,数据库无法处理这么大的请求,导致数据库崩溃。

解决方案:

  1. 为了防止缓存在同一时间大面积过期导致的缓存雪崩,可以通过观察用户行为,合理设置缓存过期时间来实现
    (缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。)
  2. 一般并发量不是特别多的时候,使用最多的解决方案是加锁排队
  3. 给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。
  4. 为了防止缓存服务器宕机出现的缓存雪崩,可以使用分布式缓存,分布式缓存中每一个节点只缓存部分的数据,当某个节点宕机时可以保证其它节点的缓存仍然可用。
  5. 也可以进行缓存预热,避免在系统刚启动不久由于还未将大量数据进行缓存而导致缓存雪崩。

redis最佳实践经验总结

                      查看详情

redis的相关总结

关于redis的相关总结1.什么是redis?2.缓存中间件——Memcache和redis的区别?Memcache:代码层次类似哈希,不支持简单数据类型,不支持分片,不支持主从分布,不支持持久化存储。redis数据类型丰富,支持主从分布,支持分片... 查看详情

redis操作命令总结

停止服务:/usr/local/redis/bin/redis-clishutdown或者pkillredis-server客户端连接:/usr/local/redis/bin/redis-cli启动服务和配置/usr/local/redis/bin/redis-server/usr/local/redis/etc/redis.conf第一个是启动redis服务器第二个是启动服务器所需的配置查看进 查看详情

个人总结:redis知识图谱

最近在面试整理下redis知识图谱:学习有更直观的认识。  查看详情

redis常见面试题总结

Redis面试题总结(1)2018年02月28日17:42:21LSX丨笔头先生阅读数:3568更多个人分类:面试题总结 (1)什么是redis? Redis 是一个基于内存的高性能key-value数据库。(有空再补充,有理解错误或不足欢迎指正) (2)Reids的... 查看详情

nodejs操作redis总结(代码片段)

本文总结常见的使用node操作redis服务,redis的key是唯一的,如果一个key所对应的存储类型是string,则不能再次覆盖式设置key为hash;1.启动redis这里我们使用docker方式搭建redis服务器dockerrun-d--nameredis-p6379:6379redis:2.82.初始化node操作redis需要... 查看详情

redis6知识点总结(代码片段)

Redis6知识点总结什么是NoSQL数据库?技术发展技术的分类Web开发分类各种数据库对比NoSQL数据库Memcache和Redis的区别?其它数据库Redis简介与安装Redis简介Redis应用场景Redis的下载Redis的安装Redis的启动Redis前台启动(不推... 查看详情

redis总结

五中数据结构缓存实际应用场景案例实现发布订阅AOF与RDB存储原理分析管道模式与主从复制原理哨兵机制原理高可用架构实现集群方式cluster实现分布式锁读写分离防止redis雪崩和击穿哨兵模式与数据丢失问题redis缓存与数据库同... 查看详情

redis面试总结(代码片段)

什么是Redis简单来说redis就是一个数据库,不过与传统数据库不同的是redis的数据是存在内存中的,所以读写速度非常快,因此redis被广泛应用于缓存方向。另外,redis也经常用来做分布式锁。redis提供了多种数据类型来支持不同的... 查看详情

总结redis(代码片段)

一.redis概述1.nosql概念NoSql:即Not-onlySQL。非关系型数据库,作为关系型数据库的补充2.redis概念redis(remotedictionaryserver)c语言开发的一个键值对数据库。单机qps(每秒读取数量)5W+3.redis数据类型1.string(1)setkeyvalue添加/修改数据(... 查看详情

redis核心技术与实战:学习总结目录

本文是我学习极客时间《Redis核心技术与实战》的学习总结,涵盖了数据结构与基础使用、高可靠性与高性能、使用规范等几个主要的主题,助你构建Redis的知识体系。本文是我学习极客时间《Redis核心技术与实战》的学习总结,... 查看详情

测试开发进阶——redis——redis常用数据类型命令和使用场景总结

  查看详情

redis学习总结(上)——redis数据类型配置文件jedis(代码片段)

Redis学习总结(上)——Redis数据类型、配置文件、Jedis一、Redis的概述二、Redis的安装、启动与关闭三、Redis数据库相关指令四、Redis的常用数据类型4.1String数据类型4.2List数据类型4.3set数据类型4.4Hash数据结构4.5Zset数据类型... 查看详情

redis数据库总结

Redis数据库定义1)Redis是远程的2)Redis是基于内存的3)Redis是非关系型数据库Redis的应用场景1)缓存2)队列3)数据存储Redis数据类型数据类型存储的值读写能力String可以是字符串、整数或浮点,统称为... 查看详情

《redis核心技术与实战》学习总结

【Redis】|总结/EdisonZhou1上一篇的遗留问题上一篇总结了一个KV数据库的基本架构和Redis的底层数据结构概览,重点总结了SortedSet的两个数据结构的切换,但没有介绍List的两个数据结构的切换,因此本文试着总结一下。... 查看详情

redis高可用技术解决方案总结

一、常见使用方式Redis的几种常见使用方式包括:Redis单副本;Redis多副本(主从);RedisSentinel(哨兵);RedisCluster;Redis自研。二、各种使用方式的优缺点1、Redis单副本Redis单副本,采用单个Redis节点部署架构,没有备用节点实... 查看详情

redis总结

目录什么是RedisRedis为什么快?Redis有哪些常用的数据类型?RedisRDB和AOF持久化的区别,如何选择?什么是Redis持久化?Redis的持久化机制是什么?RDB和AOF的优缺点如何选择如何解决缓存击穿、缓存穿透、雪崩问题?缓存击穿... 查看详情

redis学习总结

Redis学习总结一:底层实现1.1.Redis速度快的原因1.2.sortedset有序是怎么实现的二:淘汰策略三:持久化方案四:缓存雪崩五:缓存穿透六:缓存击穿一:底层实现Redis支持五种数据类型:string(字... 查看详情