Redis — 不仅仅是缓存

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

Redis — 不仅仅是缓存,缓存,redis,数据库
1*qIy3PMmEWNcD9Czh_21C8g.png

Redis是一种快速、开源的内存键值(NoSQL)数据库,远远超越了缓存的功能。Redis使用RAM进行操作,提供亚毫秒级的响应时间,支持每秒数百万次请求。Redis主要用于缓存,但它也可以作为那些数据不经常变化的应用程序的主要数据库。Redis内置了复制、服务端脚本(使用Lua脚本)、LRU驱逐、定时过期和事务支持。

Redis的用例包括:

•数据投影服务•临时消息代理•事件溯源系统

注意:Redis是使用C语言编写的。

Redis为什么快?

•Redis是基于RAM的。RAM访问速度比随机磁盘访问快。•使用IO多路复用和单线程执行循环来提高执行效率。•使用高效的底层数据结构(SDS、ZipList、SkipList、分层索引)。

Linux安装步骤

创建文件/etc/yum.repos.d/redis.repo,内容如下:

[Redis]
name=Redis
baseurl=http://packages.redis.io/rpm/rhel7
enabled=1
gpgcheck=1

然后运行以下命令:

curl -fsSL https://packages.redis.io/gpg > /tmp/redis.key
sudo rpm --import /tmp/redis.key
sudo yum install epel-release
sudo yum install redis-stack-server

高级CLI命令

$ redis-cli


INFO - 获取有关集群的信息
SELECT - 选择命名空间/数据库
DBSIZE - 获取键的数量
KEYS * - 列出所有键(模式匹配)(优先使用SCAN命令)
SCAN - 用游标返回结果的子集
EXISTS - 检查键是否存在
TYPE - 检查键的数据类型
EXPIRE - 设置键的过期时间
RENAME - 将键重命名为新名称
FLUSHDB - 清除命名空间中的所有键
FLUSHALL - 清除所有命名空间中的所有键
ROLE - 检查节点角色(主节点、从节点、哨兵节点)
CLEAR - 清除CLI上下文终端
QUIT - 退出CLI


# redis-cli --pipe #从文件或stdin流式传输命令到Redis
# redis-cli --hotkeys #查找热键

关于一些命令的几点说明

•Redis数据库是创建键的逻辑方式,用于创建键的隔离和命名空间。默认情况下,Redis有0-15个数据库索引。在集群模式下,这些数据库不存在。

SELECT index_no

•以下命令通常会添加

后缀。这些命令根据键的存在与否采取不同的行为。

NX - 如果不存在
XX - 如果存在

注意:通常在命令前加上"M"表示多,例如MGET与GET。类似地,在命令前加上"P"表示基于模式的命令。

•KEYS命令是顺序的(O(n))和同步的(阻塞的)。在应用程序中,优先使用SCAN而不是KEYS。

RedisInsight - 这是一个与Redis服务器交互的用户界面工具。

支持的数据结构

Redis — 不仅仅是缓存,缓存,redis,数据库
1*f96hoFTEAiCt2jCF-s7EmA.png

String(字符串)

•最基本和常见的Redis数据类型•Redis字符串存储字节序列•最大大小为512 MB

SET | GET | DEL
INCR | INCRBY | INCRBYFLOAT
MSET | MGET


注意:DEL是阻塞的,而UNLINK是非阻塞的

List(列表)

Redis — 不仅仅是缓存,缓存,redis,数据库
1*-DoC-iO1T8qRKUgd9mEG5A.png

•字符串值的链表•元素的集合•每个元素都是一个字符串•可以包含超过40亿个元素•元素顺序基于插入顺序•编码和内存优化

LPUSH | LRANGE | RPUSH | LPOP | RPOP | LLEN
LTRIM | LINDEX | LINSERT | LSET | LPOS | LREM

Set(集合)

•Redis集合是一组无序的唯一字符串(成员),用于跟踪唯一元素。

SADD | SREM | SCARD | SMEMBERS | SDIFF | SDIFFSTORE
SISMEMBER | SMISMEMBER | SMOVE | SPOP

Hash(哈希)

Redis — 不仅仅是缓存,缓存,redis,数据库
1*nBB3vFuBYooNrPuS-Fnz9Q.png

•Redis哈希是作为字段-值对集合结构化的记录类型。每个哈希可以存储多达42亿个(2^32-1)个字段-值对。哈希可用于在应用程序中存储会话和个人资料。

HSET | HGET | HGETALL | HDEL | HEXIST | HMSET | HMGET

Sorted Set(有序集合)

Redis — 不仅仅是缓存,缓存,redis,数据库
1*CkISVoBW8dIyC4YOu9005Q.png

•Redis有序集合是一组唯一字符串(成员),按相关分数进行排序的集

合。它可以用于排行榜、优先级队列、二级索引和速率限制器。

ZADD | ZCARD | ZSCORE | ZRANK | ZREVRANK | ZREM | ZRANGE

HyperLogLog

HyperLogLog是一种用于估计集合基数的数据结构。它可用于跟踪唯一访问者数量。HyperLogLog的实现使用了多达12KB的空间。PFADD | PFCOUNT | PFMERGE

Streams

Redis — 不仅仅是缓存,缓存,redis,数据库
1*8NRb5TeJ34Jf08do8OzGxg.png

Redis流是一种类似追加日志的数据结构。您可以使用流记录和同时传播实时事件。

XADD | XREAD | XTRIM | XDEL

XGROUP CREATE | XGROUP DESTROY | XREADGROUP

XGROUP CREATECONSUMER | XGROUP DELCONSUMER

Redis Streams允许At-most-once或At-least-once的消息传递。Redis Streams支持同步和异步读取。

Bitmap

Redis位图是字符串数据类型的扩展,它允许您将字符串视为位向量。

BITOP | BITPOS | BITCOUNT

Redis — 不仅仅是缓存,缓存,redis,数据库
1*QZ7buW1SRfDIeccgmiXxGw.png

图片来源 — bytebytego.com

Bitfield

Redis位字段允许您设置、增加和获取任意位长度的整数值。

Geospatial

Redis地理空间索引允许您存储坐标并进行搜索,查找给定半径或边界框内的附近点。GEOADD | GEODIST | GEORADIUS | GEOSEARCH | GEOPOS

•Redis使用Haversine公式计算距离。•Redis将地理空间点存储在有序集合中。集合的分数用于编码坐标对。

Key Expiration

Redis — 不仅仅是缓存,缓存,redis,数据库
1*tf8z_SgKoz69y4sXtpwIxg.png

EX — 指定秒数后过期

PX — 指定毫秒数后过期

EXAT — 指定时间戳后过期(秒)

PXAT — 指定时间戳后过期(毫秒)

TTL — 键的剩余生存时间(近似值)

PERSIST — 移除当前的过期时间

Pipelining

Redis遵循客户端-服务器模型。客户端发送请求,服务器处理请求并返回响应。吞吐量主要由往返时间(通常在毫秒级别,请求处理通常在微秒级别)决定。Redis流水线是一种提高性能的技术,它可以一次性发出多个命令,而无需等待每个单独命令的响应。这是一种网络优化,因为我们减少了客户端和服务器之间的多次往返。

Redis — 不仅仅是缓存,缓存,redis,数据库

注意:1. 管道不保证命令执行顺序。2. 在管道中不允许在写操作之后进行读操作,因为所有命令的结果将在最后一起返回。3. 在进行管道操作时,需要使用哈希标记(hash-tags),以便将键强制映射到同一个分片上。4. 管道不是原子性的。5. Python库中的管道被包装在MULTI/EXEC中。

Scripting

调用服务器端Lua脚本的执行。

SCRIPT LOAD | FUNCTION LOAD | EVAL | FCALL | FUNCTION KILL | SCRIPT KILL

注意:Lua脚本是原子的且是阻塞的。

Pub/Sub

Redis通过发布/订阅机制提供了一种解耦的消息传递范式。发布者将消息发送到频道,订阅者确认对一个或多个频道感兴趣,并接收感兴趣的消息。

Redis — 不仅仅是缓存,缓存,redis,数据库
1*tV8vZ9MMnYPok7PiTKKjyQ.png

SUBSCRIBE | PUBLISH | PUBSUB CHANNELS | UNSUBSCRIBE

注意:发布/订阅与键空间无关。

事务

Redis事务允许将一组命令作为单个步骤执行,它们围绕以下命令展开:

MULTI — 事务的开始

EXEC — 事务的结束

DISCARD — 取消事务

WATCH — 持续监视键是否在我们开始监视后被修改

Redis — 不仅仅是缓存,缓存,redis,数据库
1*mLHM_sFayUdEoT3AOKs5tg.png

UNWATCH 事务中的所有命令都是串行化执行的。在Redis事务的执行过程中,不会在执行Redis事务的过程中为另一个客户端服务。

持久化

在Redis中,如果启用持久化,数据会被持久化到磁盘。重新启动时,它会将数据加载到内存中进行计算。文章来源地址https://www.toymoban.com/news/detail-550469.html

Redis — 不仅仅是缓存,缓存,redis,数据库 RDB — 在特定间隔的特定时间点进行快照AOF — 记录每个写操作的日志,每秒同步一次,后台线程,在恢复时回放日志 注意:您可以通过发出BGSAVE命令手动进行快照。

到了这里,关于Redis — 不仅仅是缓存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Mac Snipaste 不仅仅是截图工具,不在菜单栏显示,怎么样修改快捷键

    官网下载: https://www.snipaste.com Snipaste 免费,支持 Windows、Mac,Windows 上的功能相当多而且,Mac 也够用了 不仅仅是个截图工具,具有强大功能: 截图 贴图(直接将截图贴在桌面上,当标签贴使用) 取色器 fn + F1: 开始截屏 C : 取色 Tab : 检测窗口 + 滑动触控板,选择要截屏的

    2024年02月08日
    浏览(31)
  • 从星巴克看:NFT不仅仅是一种数字资产,更代表着一种全新的交互模式

    品牌方不应将数字化的生意局限在NFT收藏品上,更需另辟蹊径,比如说粉丝通证。“粉丝通证与其说是一个概念,更准确的描述一种运营系统,而任何以此为基础进行的活动都是只是一种实现方式。如果发行的品牌方有强大影响力或者‘信心’,那么发售一款NFT收藏品是最简

    2024年02月11日
    浏览(42)
  • Redis缓存数据库

    目录 一、概述 1、Redis  2、Redis的安装 Redis Windows环境设置 3、String: 字符串 3.1、字符串 3.2、数值 3.3、bitmap 4、Hash: 散列 5、List: 列表 6、Set: 集合 7、Sorted Set: 有序集合 常识: 磁盘:1.寻址:ms(毫秒)2.带宽:MB/s 内存:1.寻址:ns    (纳秒) 2.带宽:GB/s 秒--毫秒--微妙--纳秒

    2024年02月04日
    浏览(43)
  • 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日
    浏览(42)
  • redis实战-缓存数据&解决缓存与数据库数据一致性

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

    2024年02月12日
    浏览(40)
  • redis的缓存更新策略以及如何保证redis与数据库的数据一致性

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

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

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

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

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

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

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

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

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

    2023年04月21日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包