redis详细概念大全

目录

一、概念

1.非关系型数据库(NoSQL)的介绍

2.什么是redis

3.redis的作者

4.Redis的特点

5.redis的应用场景

6.高度概括知识

7.redis的目录文件介绍

二、缓存穿透、缓存击穿、缓存雪崩的概念

(一)缓存穿透

(二)缓存击穿

(三)缓存雪崩

三、下载安装Redis操作步骤 


一、概念

1.非关系型数据库(NoSQL)的介绍

 答:随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站的高并发和纯动态网站已经显得力不从心。NoSQL数据库(非关系型数据库)的产生就是为了解决大规模集合多重数据种类带来的挑战,尤其是大数据应用难题

2.什么是redis

答: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value的非关系型数据库。Redis的数据都基于缓存的,所以很快,每秒可以处理超过10万次读写,是已知性能最快的Key -Value DB。也可以实现写入磁盘中,保证了数据的不丢失,而且Redis的操作是原子性的。

3.redis的作者

答: redis的作者,他叫Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。目前供职于Pivotal公司。

4.Redis的特点

(1)性能极高--(redis读取速度是110000次/s,写入的速度是81000次/s)

(2)丰富的数据类型(String、List、Hash、Set、Ordered Set).

(3)原子--Redis的所有操作都是原子性的,就是要么成功执行要么失败完全不执行

5.redis的应用场景

缓存、排行、计数器应用、分布式锁、社交网络、消息队列、共享Session、位操作

6.高度概括知识

(1)基于内存实现的。因为内存要比用磁盘读写的MySQL速度要快很多。

(2)高效的数据结构。Redis 支持多种数据数据类型,每种基本类型,可能对多种数据结构。

(3)字符串长度处理。

(4)空间预分配。SDS修改和空间扩充,会额外分配未使用的空间,减少性能损耗。

(5)惰性空间释放。SDS 缩短时,不是回收多余的内存空间,而是free记录下多余的空间,后续有变更,直接使用free中记录的空间,减少分配。

(6) 二进制安全。Redis可以存储一些二进制数据,在C语言中字符串遇到'\0'会结束,而 SDS中标志字符串结束的是len属性。

(7)I/O 多路复用。多路I/O复用技术可以让单个线程高效的处理多个连接请求,而Redis使用用epoll作为I/O多路复用技术的实现。并且,Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间。

(8)单线程模型。Redis是单线程模型的,而单线程避免了CPU不必要的上下文切换和竞争锁的消耗。

(9)虚拟机内存机制。Redis自己构建了VM机制 ,不会像一般的系统会调用系统函数处理,会浪费一定的时间去移动和请求。

(10)redis持久化。Redis是基于内存的非关系型K-V数据库,既然它是基于内存的,如果Redis服务器挂了,数据就会丢失。为了避免数据丢失了,Redis提供了持久化,即把数据保存到磁盘。

7.redis的目录文件介绍

  1. redis-server

    这是 Redis 服务器的可执行文件,用于启动 Redis 服务器。
  2. redis-cli

    这是 Redis 命令行客户端的可执行文件,用于与 Redis 服务器交互,执行各种 Redis 命令。
  3. redis-benchmark

    这是 Redis 自带的性能测试工具,用于对 Redis 服务器进行基准测试。
  4. redis-check-aof

    这是用于检查和修复 AOF(Append-Only File)日志文件的工具。
  5. redis-check-rdb

    这是用于检查和修复 RDB(Redis Database)快照文件的工具。
  6. redis-sentinel

    这是 Redis 哨兵模式的可执行文件,用于监控和管理 Redis 主从复制的状态。
  7. redis.conf

    这是 Redis 的主要配置文件,包含了各种 Redis 服务器的配置选项。你可以通过修改这个文件来自定义 Redis 的行为。
  8. redis.windows.conf

    这是在 Windows 环境下的 Redis 配置文件,包含了和 redis.conf 类似的配置选项。
  9. utils 目录

    这个目录包含了一些实用工具,如 sentinel.conf、install_server.sh(用于在 Linux 上设置 Redis 服务器)、create-cluster(用于创建 Redis 集群)等。
  10. src 目录

    这个目录包含了 Redis 服务器的源代码文件,一般情况下用户不需要直接操作这个目录。
  11. deps 目录

    这个目录包含了 Redis 所依赖的一些库和工具的源代码文件,用户也不需要直接操作这个目录。
  12. redis-version 文件

    这个文件记录了 Redis 的版本信息。

这些是 Redis 安装目录下一些常见的文件和目录。具体的文件和目录结构可能因 Redis 版本和安装方式的不同而有所变化。在配置和使用 Redis 时,主要关注 redis.conf 或 redis.windows.conf 这些配置文件,以及 redis-server 和 redis-cli 这些执行文件即可。

二、缓存穿透、缓存击穿、缓存雪崩的概念

正常的缓存请求方式:读取请求过来了,然后去缓存区域查询有没有,缓存有对应的值就直接命中返回。

如果去缓存区域查询没有,就去查询数据库,然后再把数据库的值更新到缓存,再返回

(一)缓存穿透

读请求访问时候,缓存和数据库都没有这个值,但是每次还是会到数据库中先查询一下。(没有该key

产生的原因

(1)业务设计的不合理:大多数用户没有开守护,但是每个请求都去查询缓存,查询某个用户有没有守护。

(2)业务/运维/开发失误的操作:比如缓存和数据库的数据都被删了

(3)黑客的非法请求攻击:黑客故意捏造大量非法请求,去读取不存在的业务

解决办法

(1)使用布隆过滤器快速判断数据是否存在。即一个查询请求过来时,先通过布隆过滤器判断值是否存在,存在才继续往下查。

(2)如果查询数据库为空,可以给缓存设置个空值,或者默认值。但是如果有写请求进来的话,需要更新缓存,以保证缓存一致性。同时,最后给缓存设置适当的过期时间。(常用)

(3)如果是非法请求,我们在API入口,对参数进行校验,过滤非法值。

(二)缓存击穿

 指热点的key在某个时间点过期,而恰好这个时候大量的并发请求来访问这个热点key,然后大量请求到了数据库。(单一key个过期

解决办法:

(1)使用互斥锁。缓存失效时候,不是立即去加载数据库的数据。而是先使用某些成功带成功返回的原子操作命令去操作,再去加载数据库和设置缓存。否则就重试去获取缓存。

(2)永不过期。没有设置过期时间,但是热点数据快要过期时,异步线程去更新和设置过期时间。

(三)缓存雪崩

指缓存中数据大批量到过期时间,而查询数据量巨大,请求都直接访问数据库,引起数据库压力过大甚至down机。(大量key过期

解决办法:

(1)通过均匀设置过期时间解决,即让过期时间相对离散一点。如采用一个较大固定值+一个较小的随机值,5小时+0到1800秒

(2)Redis 故障宕机也可能引起缓存雪奔。这就需要用Redis高可用集群

三、下载安装Redis操作步骤 

 Windows下载安装Redis的详细步骤_云边的快乐猫的博客-CSDN博客

如果你觉得本篇文章对你有所帮助的,多多支持吧!!!

点赞收藏评论,抱拳了!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Redis是一种开源的内存数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合。Redis还提供了事务、Lua脚本、发布/订阅、复制和集群等功能。 以下是一些Redis面试问题的回答: 1. Redis的优点是什么? Redis的优点包括高性能、可扩展性、丰富的数据结构、支持事务和Lua脚本、支持发布/订阅、复制和集群等功能。 2. Redis的缺点是什么? Redis的缺点包括数据持久化方案相对简单、单线程模型可能会成为瓶颈、内存使用较高等。 3. Redis的数据结构有哪些? Redis支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合。 4. Redis的持久化方式有哪些? Redis支持两种持久化方式:RDB和AOF。RDB是将内存中的数据定期保存到磁盘上,AOF是将Redis执行的每个写命令追加到文件中。 5. Redis的主从复制是什么? Redis的主从复制是指将一个Redis实例作为主节点,其他Redis实例作为从节点,主节点将自己的数据同步到从节点上。从节点可以用于读取数据、提高系统的可用性和容错能力。 6. Redis的集群是什么? Redis的集群是指将多个Redis实例组成一个集群,实现数据的分片和负载均衡,提高系统的可扩展性和容错能力。 7. Redis的事务是什么? Redis的事务是指将多个命令打包成一个事务,然后一次性执行,保证事务的原子性。如果其中一个命令执行失败,整个事务都会回滚。 8. Redis的Lua脚本是什么? Redis的Lua脚本是指将Lua脚本作为一个整体发送给Redis服务器,然后由Redis服务器执行。Lua脚本可以实现复杂的业务逻辑,提高系统的性能和可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边的快乐猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值