Redis缓存数据库知识

Redis是一个内存数据结构存储系统,常用于缓存和消息中间件,提供多种数据结构如字符串、哈希表等。与MySQL相比,Redis处理速度更快但数据非持久化。文章介绍了Redis的安装、配置以及常用命令,同时提到了Redis缓存穿透、击穿、雪崩的问题及预防策略。
摘要由CSDN通过智能技术生成

Redis缓存数据库知识

1.什么是redis

简单理解:

redis是一个缓存数据库,也是一种中间件,是为了解决主数据库压力从而采用的一种软件解决方案。里面往往存放一些不是太重要(不需要永久存放),但是又必须临时存放的东西,比如token(登录信息),签到记录,活动领取记录等等

Redis是一个开源的内存数据结构存储系统,也可以用作数据库、缓存和消息中间件。

以下是一个使用Redis作为缓存的简单示例:

假设你有一个Web应用程序,它需要频繁地查询数据库以获取数据。为了提高性能,你可以使用Redis作为缓存,将经常使用的数据存储在Redis中。这样,当Web应用程序需要数据时,它可以首先检查Redis缓存中是否存在数据,如果存在则直接从Redis中获取数据,否则再从数据库中获取数据并将其存储到Redis缓存中。

在这个示例中,Redis充当了一个高速缓存,可以显著提高Web应用程序的性能。由于Redis存储在内存中,所以它非常快速,可以处理高并发的请求。

2.redis的数据结构

它支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合等,并提供了丰富的操作这些数据结构的命令。

3.redis跟mysql的区别?

Redis和MySQL是两种不同的数据存储系统,它们的设计目标和应用场景也不同,因此每秒处理能力也有所不同。

Redis是一款基于内存的数据存储系统,它的每秒处理能力非常高,可以达到数十万甚至数百万次的读写操作。这是因为Redis将数据存储在内存中,而内存的读写速度非常快,可以达到几十GB/s的速度。此外,Redis还采用了多线程、异步I/O、事件驱动等技术,进一步提高了性能。

MySQL是一款基于磁盘的关系型数据库系统,它的每秒处理能力相对较低,一般在几千到几万次的读写操作之间。这是因为MySQL需要将数据存储在磁盘上,而磁盘的读写速度相对较慢,一般只有几百MB/s的速度。此外,MySQL还需要进行SQL解析、查询优化、索引查找等复杂的操作,这也会影响性能。

需要注意的是,每秒处理能力并不是唯一的性能指标,不同的应用场景和需求可能需要不同的性能指标。此外,Redis和MySQL也可以结合使用,根据实际情况选择合适的存储方案。

redis是可以优化手段,可有可无。

不过大型的公司里面,基本都会部署redis

3.安装redis

以下是在CentOS 7.5上安装Redis的步骤:

3.1.下载最新的redis
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

在这里插入图片描述

3.2.安装redis
yum --enablerepo=remi install redis

//中间记得输入y

在这里插入图片描述

3.3.启动redis
启动redis(必须要做)
systemctl start redis

检查是否启动(看看就行了)
ps -A|grep redis


查看安装时创建的文件(看看就行了)
rpm -ql redis

查看redis版本(看看就行了)
redis-cli --version

检查Redis是否已经启动(看看就行了)
systemctl status redis

设置开机自启(必须要做)
systemctl enable redis.service

本地连接redis(看看就行了)
redis-cli

//没有空格

在这里插入图片描述

3.4. 配置redis

如果你需要配置,可以去修改这个文件

Redis的默认配置文件位于/etc/redis.conf。你可以修改这个文件以满足你的需求,比如修改Redis的监听IP地址、端口号等。

vim /etc/redis.conf

例如:

这里我们要修改redis配置,允许别的地方可以连接到redis里面

在默认情况下,Redis只允许本地访问,如果需要允许远程访问,需要修改Redis配置文件。

以下是修改Redis配置文件以允许任何人链接的步骤:

  1. 打开Redis配置文件/etc/redis.conf,可以使用以下命令打开:

    vim /etc/redis.conf
    
  2. 找到bind参数的配置行,将其注释掉然后设置一行为0.0.0.0,例如:

    #bind 127.0.0.1 -::1
    bind 0.0.0.0
    

在这里插入图片描述

  1. 如果需要进行密码认证,找到requirepass参数的配置行,将其注释掉或设置为指定的密码,例如:
#requirepass foobared
requirepass haimianbaobao

如果该行被注释掉,需要将其前面的#号去掉,并在后面替换为你想要设置的密码。

我这里设置的是 haimianbaobao

在这里插入图片描述

wq!保存修改并退出编辑器。


3.5 额外补充:

在vim里面如何快速定位到某一行:

在命令模式下,按下斜杠键(/),然后输入关键词,按下 Enter 键,即可搜索到包含该关键词的第一个匹配行。

可以重复按下 n 键,跳转到下一个匹配行。

例如要搜索包含“requirepass”的行,可以按下斜杠键,然后输入“requirepass”,按下 Enter 键。

在这里插入图片描述

3.6 重启redis

重启Redis服务器使得修改生效,可以使用以下命令重启Redis:

systemctl restart redis

在这里插入图片描述

修改完成后,Redis将允许任何人链接到服务器。

需要注意的是,为了确保安全性,建议在远程链接时使用密码认证,并限制只有授权的用户才能够链接到Redis服务器。

4.连接redis数据库

4.1 服务器本地连接redis

在CentOS 7.5系统上连接Redis数据库,你需要按照以下步骤进行:

  1. 连接redis:
redis-cli

在这里插入图片描述

2.连接成功后,输入刚才的密码进行认证

auth haimianbaobao

//haimianbaobao是我刚才自己设置的密码

在这里插入图片描述

3.认证通过后,就可以使用redis命令

// 查询所有的数据

keys *



// 添加一个字符串类型的键值对:

set mykey "Hello, Redis!"


// 添加一个list类型的键值对:
lpush mylist "item1" "item2" "item3"

在这里插入图片描述

4.2 使用工具远程连接redis

​ 参考另一个教程

5.redis的常用命令都有哪些?

在实际的工作中,redis通常不会使用命令来操作,而是像使用navicat一样,使用工具来操作redis,这样效率会高的多。

但是常见的命令大家也需要了解一些。

以下是Redis的一些常用命令:

  1. 键操作命令:
  • SET key value:设置一个键值对。
  • GET key:获取一个键的值。
  • DEL key:删除一个键。
  • EXISTS key:检查一个键是否存在。
  • KEYS pattern:查找匹配给定模式的所有键。
  1. 哈希表操作命令:
  • HSET key field value:设置哈希表中的一个字段的值。
  • HGET key field:获取哈希表中一个字段的值。
  • HGETALL key:获取哈希表的所有字段和值。
  • HDEL key field1 field2 ...:删除哈希表中的一个或多个字段。
  • HEXISTS key field:检查哈希表中是否存在指定字段。
  1. 列表操作命令:
  • LPUSH key value1 value2 ...:将一个或多个值插入到列表头部。
  • RPUSH key value1 value2 ...:将一个或多个值插入到列表尾部。
  • LPOP key:从列表头部弹出一个值。
  • RPOP key:从列表尾部弹出一个值。
  • LLEN key:获取列表的长度。
  1. 集合操作命令:
  • SADD key member1 member2 ...:向集合中添加一个或多个成员。
  • SMEMBERS key:获取集合中的所有成员。
  • SREM key member1 member2 ...:从集合中删除一个或多个成员。
  • SISMEMBER key member:检查一个成员是否存在于集合中。
  1. 有序集合操作命令:
  • ZADD key score1 member1 score2 member2 ...:向有序集合中添加一个或多个成员,每个成员都有一个分数。
  • ZRANGE key start stop [WITHSCORES]:获取有序集合中排名在指定范围内的成员。
  • ZREM key member1 member2 ...:从有序集合中删除一个或多个成员。
  • ZSCORE key member:获取有序集合中指定成员的分数。
  1. 其他命令:
  • PING:检查Redis服务器是否可用。
  • INFO:获取Redis服务器的信息。
  • SELECT index:选择指定的数据库。
  • FLUSHDB:清空当前数据库的所有键。
  • FLUSHALL:清空所有数据库的所有键。

这些是Redis的一些常用命令,你可以根据你的需要使用这些命令。

6.redis的穿透、击穿、雪崩

Redis缓存穿透、击穿、雪崩是Redis缓存中的三个常见问题,分别是:

  1. 缓存穿透:指查询一个不存在的key,由于缓存中没有对应的数据,因此会将请求打到后端的数据库上,导致数据库压力过大,甚至宕机。
  2. 缓存击穿:指查询一个存在的key,但是由于某些原因,该key在某个时间点失效,此时大量请求同时访问该key,导致请求直接打到后端的数据库上,导致数据库压力过大,甚至宕机。
  3. 缓存雪崩:指缓存中大量的key在同一时间失效或者更新,导致大量请求直接打到后端的数据库上,从而导致数据库负载瞬间升高,甚至宕机,导致整个系统出现故障的情况。

为了避免Redis缓存穿透、击穿、雪崩问题,可以采取以下措施:

  1. 缓存穿透:可以在应用程序中对查询参数进行校验,例如使用布隆过滤器、在应用层使用缓存穿透保护策略等。
  2. 缓存击穿:可以在缓存中设置热点数据永不过期,或者使用互斥锁/分布式锁等手段避免大量请求同时访问失效的key。
  3. 缓存雪崩:可以在设置缓存过期时间时,加上随机值,避免缓存同时失效,或者使用缓存预热策略,提前将数据加载到缓存中,避免在同一时间大量数据失效。

通过以上措施,可以有效地避免Redis缓存中的三个常见问题,提高系统的可用性和稳定性。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值