【redis】redis的认识和安装

这篇具有很好参考价值的文章主要介绍了【redis】redis的认识和安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工具:Xshell + 云服务器 + CentOS

1.redis是什么

Redis 是⼀种基于键值对(key-value)的 NoSQL 数据库,与很多键值对数据库不同是,Redis中的值可以是由 string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成。

2.Redis的特点

1. 速度快

  1. redis所有数据都是存放在内存中的。
  2. Redis 是⽤ C 语⾔实现的,⼀般来说 C 语⾔实现的程序 “距离” 操作系统更近,执⾏速度相对会更快。
  3. Redis 使⽤了单线程,预防了多线程可能产⽣的竞争问题。

2. 基于键值对的数据结构服务器

  • Redis 中的值不仅可以是字符串,⽽且还可以是具体的数据结构,这样不仅能便于在许多应⽤场景的开发,同时也能提⾼开发效率。
  • Redis 的全称是 REmote Dictionary Server,它主要提供了 5 种数据结构:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(ordered set /zet)

3. 丰富的功能

  • 提供了键过期功能,可以⽤来实现缓存。

  • 提供了发布订阅功能,可以⽤来实现消息系统。

  • ⽀持 Lua 脚本功能,可以利⽤ Lua 创造出新的Redis 命令。

  • 提供了简单的事务功能,能在⼀定程度上保证事务特性。

  • 提供了流⽔线(Pipeline)功能,这样客⼾端能将⼀批命令⼀次性传到 Redis,减少了⽹络的开销。

4. 简单稳定

  • redis源码很少,也就意味着普通的开发和运维⼈员完全可以 “吃透” 它。
  • 其次,Redis 使⽤单线程模型,这样不仅使得 Redis 服务端处理模型变得简单,⽽且也使得客⼾端开发变得简单。
  • Redis 不需要依赖于操作系统中的类库,⾃⼰实现了事件处理的相关功能。
  • Redis 具备相当的稳定性,在⼤量使⽤过程中,很少出现因为 Redis ⾃⾝ BUG⽽导致宕掉的情况。

5.客户端语言多

Redis 提供了简单的 TCP 通信协议,很多编程语⾔可以很⽅便地接⼊到 Redis,并且由于 Redis
受到社区和各⼤公司的⼴泛认可,所以⽀持 Redis 的客⼾端语⾔也⾮常多,⼏乎涵盖了主流的编程语⾔,例如 C、C++、Java、PHP、Python、NodeJS 等。

6. 持久化

通常看,将数据放在内存中是不安全的,⼀旦发⽣断电或者机器故障,重要的数据可能就会丢 失,因此 Redis 提供了两种持久化⽅式:RDB 和 AOF,即可以⽤两种策略将内存的数据保存到硬盘中,这样就保证了数据的可持久性。

7. 主从复制

Redis 提供了复制功能,实现了多个相同数据的 Redis 副本(Replica)。

【redis】redis的认识和安装,redis,redis,数据库,缓存,java

8. 高可用和分布式

Redis 提供了⾼可⽤实现的 Redis 哨兵(Redis Sentinel),能够保证 Redis
结点的故障发现和故障⾃动转移。也提供了 Redis 集群(Redis
Cluster),是真正的分布式实现,提供了⾼可⽤、读写和容量的扩展性。

3.安装redis

安装redis

yum -y install redis

查看是否启动

ps -ef|grep redis

启动redis

redis-server /etc/redis.conf &

【redis】redis的认识和安装,redis,redis,数据库,缓存,java6379是redis默认端口号,出现6379则启动成功。

停止redis

redis-cli shutdown

杀掉进程
(kill -9强制杀掉,kill -15优雅退出)

kill -9 PID

使用redis

redis-cli

具体操作如下:

【redis】redis的认识和安装,redis,redis,数据库,缓存,java

4.设置远程连接

远程连接就是在远程连接另外一台计算机。当某台计算机开启了远程桌面连接功能后我们就可以在网络的另一端控制这台计算机了,通过远程桌面功能我们可以实时的操作这台计算机,在上面安装软件,运行程序,所有的一切都像是直接在该计算机上操作一样。

这里的远程连接指的是远程连接redis,即6379端口

⭐使用隧道的方式进行远程连接。

4.1 开启隧道

选择一个会话,右键->属性

【redis】redis的认识和安装,redis,redis,数据库,缓存,java

  • 连接之后,需要重启会话连接,再打开才可以。
  • 后续访问云服务器的redis,就可以使用本地127.0.0.1+6379来访问。

⭐⭐注意:使用redis时,必须打开连接才可以。

其它电脑想访问云服务器:

  1. 开放端口号
  2. 防火墙

4.2 可视化客户端连接

使用的是redis 可视化客户端。

官网地址:redis

【redis】redis的认识和安装,redis,redis,数据库,缓存,java

4.3 开启防火墙

防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。

查看防火墙状态

systemctl status firewalld

为dead表示未开启:

【redis】redis的认识和安装,redis,redis,数据库,缓存,java

开启防火墙

systemctl start firewalld

列出当前开放端口

firewall-cmd --list-ports

开放6379端口

firewall-cmd --add-port 6379/tcp

5.redis常见数据类型

Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维⾮常重要,同时掌握每种数据结构的常⻅命令,会在使⽤ Redis 的时候做到游刃有余。

【redis】redis的认识和安装,redis,redis,数据库,缓存,java

5.1 redis的一些全局命令

KEYS

返回所有满⾜样式(pattern)的 key。支持如下统配样式:

  • h?llo 匹配 hello, hallo 和 hxllo

  • h*llo 匹配 hllo 和heeeello

  • h[ae]llo匹配hello 和hallo 但不匹配 hillo

  • h[^e]llo 匹配hallo, hbllo, … 但不匹配 hello

  • h[a-b]llo 匹配hallo 和 hbllo

语法:

KEYS pattern

示例:

redis> KEYS *name*
1) "firstname"
2) "lastname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "age"
2) "firstname"
3) "lastname"

EXISTS

判断某个 key 是否存在。返回key 存在的个数。

语法:

EXISTS key [key ...]

示例:

redis> SET key1 "Hello"
"OK"
redis> EXISTS key1
(integer) 1
redis> EXISTS nosuchkey
(integer) 0
redis> SET key2 "World"
"OK"
redis> EXISTS key1 key2 nosuchkey
(integer) 2

DEL

删除指定的 key。返回删除掉的 key 的个数。

语法:

DEL key [key ...]

示例:

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> DEL key1 key2 key3
(integer) 2

EXPIRE

为指定的 key 添加秒级的过期时间。返回值:1 表⽰设置成功。0 表⽰设置失败。

语法:

EXPIRE key seconds

示例:

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10

TTL

获取指定 key 的过期时间,秒级。

语法:

TTL key

示例:

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10

TYPE

返回 key 对应的数据类型。

语法:

TYPE key

示例:

redis> SET key1 "value"
"OK"
redis> LPUSH key2 "value"
(integer) 1
redis> SADD key3 "value"
(integer) 1
redis> TYPE key1
"string"
redis> TYPE key2
"list"
redis> TYPE key3
"set"

5.2 数据结构

type 命令实际返回的就是当前键的数据结构类型

  1. string(字符串)
  2. list(列表)
  3. hash(哈希)
  4. set(集合)
  5. zset(有序集合)

但这些只是 Redis 对外的数据结构。

【redis】redis的认识和安装,redis,redis,数据库,缓存,java
实际上 Redis 针对每种数据结构都有⾃⼰的底层内部编码实现,⽽且是多种实
现,这样 Redis 会在合适的场景选择合适的内部编码,如图所示。

6. redis的典型应用—缓存(cache)

缓存 (cache) 是计算机中的⼀个经典的概念. 在很多场景中都会涉及到.核⼼思路就是把⼀些常⽤的数据放到触⼿可及(访问速度更快)的地⽅, ⽅便随时读取。

举个例子:

  • ⽐如我需要去⾼铁站坐⾼铁. 我们知道坐⾼铁是需要反复刷身份证的 (进⼊⾼铁 站, 检票, 上⻋, 乘⻋过程中, 出站…).
  • 正常来说, 我的身份证是放在⽪箱⾥的(⽪箱的存储空间⼤, ⾜够能装). 但是每次刷 身份证都需要开⼀次⽪箱找身份证, 就⾮常不⽅便.
  • 因此我就可以把身份证先放到⾐服⼝袋⾥. ⼝袋虽然空间⼩, 但是访问速度⽐⽪箱 快很多.
  • 这样的话每次刷身份证我只需要从⼝袋⾥掏身份证就⾏了, 就不必开⽪箱了. 此时 “⼝袋” 就是 “⽪箱” 的缓存.使⽤缓存能够⼤⼤提⾼访问效率.

6.1 使用redis做缓存

在⼀个⽹站中, 我们经常会使⽤关系型数据库 (⽐如 MySQL) 来存储数据. 关系型数据库虽然功能强⼤, 但是有⼀个很⼤的缺陷,就是性能不⾼. (换⽽⾔之, 进⾏⼀次查询操作消耗的系统资源多).

Redis 就是⼀个⽤来作为数据库缓存的常⻅⽅案.

Redis 访问速度⽐ MySQL 快很多. 或者说处理同⼀个访问请求, Redis 消耗的系统资源比MySQL 少很多. 因此 Redis 能⽀持的并发量更⼤.

  • Redis 数据在内存中, 访问内存⽐硬盘快很多.
  • Redis 只是⽀持简单的 key-value 存储, 不涉及复杂查询的那么多限制规则.

【redis】redis的认识和安装,redis,redis,数据库,缓存,java

  • 客户端访问业务服务器, 发起查询请求.
  • 业务服务器先查询 Redis, 看想要的数据是否在 Redis 中存在.
  • 如果已经在 Redis 中存在了, 就直接返回. 此时不必访问 MySQL 了.
  • 如果在 Redis 中不存在, 再查询 MySQL,同时存在保存在Redis中

6.2 缓存穿透,缓存雪崩和缓存击穿

缓存穿透

什么是缓存穿透?

访问的 key 在 Redis 和 数据库中都不存在. 此时这样的 key 不会被放到缓存上,后续如果仍然在访问该key, 依然会访问到数据库.这就会导致数据库承担的请求太多, 压⼒很⼤. 这种情况称为 缓存穿透.

产生原因

  • 业务设计不合理. ⽐如缺少必要的参数校验环节, 导致⾮法的 key 也被进⾏查询了.
  • 开发/运维误操作. 不⼩⼼把部分数据从数据库上误删了.
  • ⿊客恶意攻击.

缓存雪崩

什么是缓存雪崩?

短时间内⼤量的 key 在缓存上失效, 导致数据库压⼒骤增, 甚⾄直接宕机.本来 Redis 是MySQL 的⼀个护盾, 帮 MySQL抵挡了很多外部的压⼒. ⼀旦护盾 突然失效了, MySQL ⾃身承担的压⼒骤增, 就可能直接崩溃.

产生原因

⼤规模 key 失效, 可能性主要有两种:

  • Redis 挂了.
  • Redis 上的⼤量的 key 同时过期

缓存击穿

什么是缓存击穿?

相当于缓存雪崩的特殊情况. 针对热点 key , 突然过期了, 导致⼤量的请求直接访问 到数据库上, 甚⾄引起数据库宕机.文章来源地址https://www.toymoban.com/news/detail-628622.html

到了这里,关于【redis】redis的认识和安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • redis实战-缓存数据&解决缓存与数据库数据一致性

    缓存( Cache),就是数据交换的 缓冲区 ,俗称的缓存就是 缓冲区内的数据 ,一般从数据库中获取,存储于本地代码。防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪,这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术,

    2024年02月12日
    浏览(52)
  • Redis缓存数据库(四)

    目录 一、概述 1、Redis Sentinel 1.1、docker配置Redis Sentinel环境 2、Redis存储方案 2.1、哈希链 2.2、哈希环 3、Redis分区(Partitioning)  4、Redis面试题 Redis Sentinel为Redis提供了 高可用解决方案 。实际上这意味着使用Sentinel可以部署一套Redis, 在没有人为干预的情况下去应付各种各样的失

    2024年02月05日
    浏览(53)
  • redis数据库缓存服务器

    redis比mysql访问数据快 非关系型数据库以键值对的方式存储数据 作用:加快访问速度,缓解数据库压力 redis最新版本7 特点 丰富的数据结构 list,set,hash等数据结构的存储 支持持久化 支持事务 “一个完整的动作,要么全部执行,要么什么也没有做” 支持主从支持高可用,支持

    2024年02月05日
    浏览(59)
  • Redis---数据库和缓存如何保证一致性?

    用「读 + 写」请求的并发的场景来分析: 假如某个用户数据在缓存中不存在,请求 A 读取数据时从数据库中查询到年龄为 20,在未写入缓存中时另一个请求 B 更新数据。它更新数据库中的年龄为 21,并且清空缓存。这时请求 A 把从数据库中读到的年龄为 20 的数据写入到缓存

    2024年01月24日
    浏览(53)
  • Redis如何保证缓存和数据库一致性?

    现在我们在面向增删改查开发时,数据库数据量大时或者对响应要求较快,我们就需要用到Redis来拿取数据。 Redis:是一种高性能的内存数据库,它将数据以键值对的形式存储在内存中,具有读写速度快、支持多种数据类型、原子性操作、丰富的特性等优势。 优势: 性能极高

    2024年01月16日
    浏览(66)
  • Redis如何保障缓存与数据库的数据一致性问题?

    目录 一.最经典的数据库加缓存的双写双删模式 二. 高并发场景下的缓存+数据库双写不一致问题分析与解决方案设计 三、上面高并发的场景下,该解决方案要注意的问题 1.1 Cache Aside Pattern概念以及读写逻辑 (1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取

    2023年04月21日
    浏览(47)
  • redis的缓存更新策略以及如何保证redis与数据库的数据一致性

    redis的缓存更新策略有这么几种: 1、由应用直接和redis以及数据库相连接:         查询数据时,应用去redis中查询,查不到的话再由应用去数据库中查询,并将查询结果放在redis;         更新数据时,由应用去触发redis数据的删除以及数据库的update。 2、应用只跟redi

    2024年02月13日
    浏览(53)
  • Springboot+Redis:实现缓存 减少对数据库的压力

    🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 Redis实战与进阶 本专栏讲解Redis从原理到实践 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.csdn.net/   目录 缓存如何实现?

    2024年03月24日
    浏览(55)
  • Redis数据库 | 发布订阅、主从复制、哨兵模式、缓存雪崩

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息 Redis 客户端可以订阅任意数量的频道 Redis主从复制是指在Redis中设置一个主节点(Master)和一个或多个从节点(Slave),

    2024年02月15日
    浏览(51)
  • 数据库缓存服务——NoSQL之Redis配置与优化

    目录 一、缓存概念 1.1 系统缓存 1.2 缓存保存位置及分层结构 1.2.1 DNS缓存 1.2.2 应用层缓存 1.2.3 数据层缓存 1.2.4 硬件缓存 二、关系型数据库与非关系型数据库 2.1 关系型数据库 2.2 非关系型数据库 2.3 关系型数据库和非关系型数据库区别: 2.4 非关系型数据库产生背景 2.5 总结

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包