
Redis深入学习
文章平均质量分 90
此专栏带你可以带你深入学习 Redis~
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
陈亦康
25届学生,热爱全栈,擅长后端开发,曾就职于滴滴、用友、堆糖. 欢迎加群交流(QQ):1002337860
展开
-
Redis - 记录一次千万级 key 的 Redis 主从迁移步骤
完成 redis 主从迁移:* `主节点` 从 10.200.16.75 迁移到 10.200.16.10* `从节点` 从 10.200.16.74 迁移到 10.200.16.11最后保证迁移后数据基本一致.原创 2024-08-07 23:29:03 · 753 阅读 · 0 评论 -
SpringCache 缓存 - @Cacheable、@CacheEvict、@CachePut、@Caching、CacheConfig 以及优劣分析
对于读多写少,一致性要求不高的数据,完全可以使用 SpringCache 来简化开发(只要缓存的数据有过期时间就可以).对于一致性要求高的场景,也没必要引入引入缓存,直接对数据库进行读写即可.特殊数据特殊处理.原创 2024-06-05 21:47:31 · 1970 阅读 · 0 评论 -
Redisson 分布式锁 - RLock、RReadWriteLock、RSemaphore、RCountDownLatch(配置、使用、原理)
目录前言Redisson 分布式锁环境配置1)版本说明2)依赖如下3)配置文件如下4)项目配置RLock1)使用方式2)加锁解释3)加锁时手动设置时间4)加锁时,到底要不要手动设置过期时间?(最佳实践)RReadWriteLock1)使用方式2)加锁原理RSemaphore1)使用方式2)信号原理RCountDownLatch1)使用方式2)原理解释前面讲过一篇 Redisson 分布式锁的底层原理,而这篇文章着重实战,因此对原理不清楚的,可以看看我之前的文章:http://t.csdnimg.cn/LU5原创 2024-06-04 22:55:51 · 1433 阅读 · 0 评论 -
点赞功能真的有必要上 Redis 吗?(Mongo、MySQL、Redis、MQ 实测性能对比)
除了单表操作比较耗时外,对于中小型项目而言,频繁的读写操作场景,使用 mongo 就够用了. 甚至都不用上 mq,更甚至有的场景下 redis 性能还不如 mongo...原创 2024-03-10 20:00:34 · 2119 阅读 · 1 评论 -
Spring Data Redis + RabbitMQ - 基于 string + hash 实现缓存,计数(高内聚)
2. 对于文章访问量自增,考虑到 过期时间 和 api 的原因: “1) 文章内容的缓存是存在过期时间的,而文章的访问量是永久保存的. 2) redis 5 没有给 hash 提供 incr 操作,只提供了 incrby,想必也是这种操作比较少” ,因此文章访问量使用 string 类型缓存即可,每次访问后,通过 mq 异步同步数据到 mysql.例如论坛网站,有些帖子的访问评论很高,就需要设置成热点文章,缓存起来(比起去 MySQL 数据库中查询文章要快的多).原创 2023-11-04 09:05:57 · 930 阅读 · 0 评论 -
Spring Data Redis + RabbitMQ - 基于 string 实现缓存、计数功能(同步数据)
假设,用户点击某个帖子,此时需要进行访问量 + 1 的操作,这时候应用服务器就会直接去操作 Redis ,执行 incr 命令,然后将返回的数据反馈给用户,最后 Redis 会以异步的方式(RabbitMQ 实现异步)将播放量同步到 MySQL 数据库中(异步就表示:这里并不是每一个播放请求,都需要立即写入数据~ 至于什么时候写入,需要根据实际的业务需求场景而定),将数据持久化.例如论坛网站,有些帖子的访问评论很高,就需要设置成热点文章,缓存起来(比起去 MySQL 数据库中查询文章要快的多).原创 2023-11-03 11:56:14 · 1455 阅读 · 0 评论 -
深入学习 Redis - 分布式锁底层实现原理,以及实际应用
lua 语言特别轻量(实现一个 lua 解释器,消耗的体积非常小),可以使用 lua 编写一些逻辑,把这个脚本上传到 redis 服务器上,然后就可以让客户端来控制 redis 执行上述脚本了.最重要的一点就是,redis 执行一个 lua 脚本,就相当于在 redis 上执行一个命令一样,是原子的. 并且 redis 官方文档中也明确说,lua 就属于是 事务 的替代方案.例如前面的 “买票” 案例.elsereturn 0end;原创 2023-09-20 14:18:03 · 5902 阅读 · 0 评论 -
深入学习 Redis - 如何使用 Redis 作缓存?缓存更新策略?使用需要注意哪些问题(工作/重点)
缓存可以理解为,将常用的数据从放到一个访问速度更快的的地方,方便更快的随时读取.也就是说,速度快的设备,可以作为速度慢的设备的缓存,加快读取速度。原创 2023-09-19 16:41:08 · 5192 阅读 · 2 评论 -
深入学习 Redis Cluster - 集群缩容(全网最详细)
全网最详细的缩容操作!原创 2023-09-17 18:45:50 · 457 阅读 · 0 评论 -
深入学习 Redis Cluster - 基于 Docker、DockerCompose 搭建 Redis 集群,处理故障、扩容方案
当前阶段,由于我只有一个 云服务器,搞分布式系统就比较麻烦,而实际工作中,一般是通过多个主机的方式来搭建集群的.因此这里我会 基于 docker、docker-compose(容器编排) 来搭建 redis 集群.原创 2023-09-17 15:34:18 · 1972 阅读 · 0 评论 -
深入学习 Redis Cluster - 集群是啥,数如何理解据分片算法
广义的集群:只要你是多个机器,构成的分布式系统,都可以成为是一个 “集群”,也就是说,之前所讲的 主从结构、哨兵模式,也可以称为是一个 “广义的集群”.狭义的集群:这个说的就是 redis 提供的集群模式. 这个集群模式之下,主要就是解决,存储空间不足的问题.原创 2023-09-16 22:45:15 · 421 阅读 · 0 评论 -
深入学习 Redis Sentinel - 基于 DockerCompose 编排哨兵分布式架构,理解工作原理
Redis Sentinel 是⼀个分布式架构,其中包含若干个 Sentinel 节点(哨兵)和 Redis 数据节点,这两种结点之间的哨兵机制,是通过独立的进程来体现的,和 redis-server 是不同进程!redis-sentinel 不负责存储数据,只是对其他的 redis-server 进程起到监控的效果.原创 2023-09-13 16:59:06 · 1192 阅读 · 0 评论 -
深入学习 Redis - 主从结构配置、流程、底层原理(全网最详细)
单点问题可用性:如果这个机器挂了,意味着服务就中断了.性能:支持的并发量也是比较有限的.因此引入分布式系统,主要也是为了解决上述的单点问题~ 分布式系统中,往往需要多个服务器来部署 redis 服务,从而构成redis 集群,此时就可以让这个集群给整个分布式系统中的其他服务,提供更稳定 / 更高效的数据存储功能.本章主要来讲一下 redis 部署方式中的主从模式~原创 2023-08-11 14:48:45 · 9323 阅读 · 0 评论 -
深入学习 Redis - 事务、实现原理、指令使用及场景
Redis 事务的主要意义就是为了 “打包” ,避免其他客户端的命令,插队到其中,那他具体是通过什么实现的呢?Redis 实现事务,是引入了队列(每一个客户端都有),开启事务的时候,客户端输入的命令,就会发给服务器,然后进入都这个队列中,此时并不会立即执行,当收到 “执行事务” 命令的时候,就会把队列中的这些任务按照顺序依次执行(这里是由 Redis 主线程执行的,他会把事务中的操作执行完,再去执行其他客户端).原创 2023-08-06 18:10:20 · 1642 阅读 · 0 评论 -
深入学习 Redis - 谈谈你对 Redis 的 RDB、AOF、混合持久化的了解吧?
bgsave 操作流程是通过 fork 创建子进程,让子进程来完成持久化操作~ 持久化就会把要生成的快照数据先保存到一个临时文件中,当这个快照生成完后,再删除之前的 rdb 文件,把新生成临时 rdb 文件名字改成刚才的删除的 rdb 文件的名字,然后使用新的文件替换旧的文件(rdb 对于 fork 之后的新数据,就置之不理了,这里要对比着 aof 来看).Ps:这后台处理是怎么做到的?并非如此,实际上这是一个 并发编程 的场景,此处 redis 使用的是 “多进程” 的方式来完成并发编程。原创 2023-08-05 18:08:07 · 1854 阅读 · 0 评论 -
Centos7/8 安装/配置 Redis5
默认安装的⽬录为 /opt/rh/rh-redis5/root/usr/bin/ , 藏的太深了, 不方便使用. 我们通过符号链接, 把需要用到的关键内容设置到⽅便使⽤的⽬录中(类似于“快捷方式”)如果是 Centos8,yum 仓库中默认的 redis 版本就是 5,直接使用 yum install 即可。在 /etc/redis/ 目录下就可以通过 vim redis.conf 打开 redis 的配置文件进行修改~接下来就可以使用 redis-cli 打开 redis 客户端啦~原创 2023-08-05 13:34:14 · 898 阅读 · 0 评论 -
深入学习 Redis - 基于 Spring Data Redis 操作 Redis
RedisTemplate 是把 Redis 的方法,分成了几个类别来进行组织,和原生的 Redis 命令有一定的差异~ 作者的初心是希望通过上述封装,让接口看起来更简单,但在我看来,并没有达成,反而因为与 Redis 原生命令差异,提高了使用者的学习成本.之前使用 Jedis 是通过 Jedis 对象里的各种方法来操作 redis 的,此处 Spring 则是通过 SpringRedisTemplate 来操作 redis.原创 2023-07-30 21:47:19 · 2258 阅读 · 1 评论 -
深入学习 Redis - 基于 Jedis 通过 Java 客户端操作 Redis 和 Redis 集群
我们在本地 windows 主机上,使用 xshell 连接远程服务器,主要就是通过 ssh 协议(默认走 22 端口)实现通信的,他有一个很重要的特性,就是支持端口转发!我们只需要配置 ssh 程序监听本地端口,映射到云服务器的端口,就可以实现通过 windows 主机,访问云服务器的 6379 端口.Ps:一个优秀的库,一定是非常容易上手的,因此接下来介绍的操作,不会覆盖到所有指令,会挑选出一些重要 / 代表性的命令,来进行演示~Ps:当配置了端口准发后,一定要断开之前的连接,重新连接才能生效.原创 2023-07-30 14:54:20 · 1247 阅读 · 0 评论 -
深入学习 Redis - 渐进式遍历 scan 命令、数据库管理命令
之前我们所了解到的 keys * 是一次性把整个 redis 中所有的 key 都获取到,但是整个操作比较危险,可能会一下子的都太多的 key,阻塞 redis 服务器.通过渐进式遍历,就可以做到,既能获取所有的 key ,同时又不会卡死服务器~渐进式遍历不是一个命令就把所有 key 都拿到,而是每执行一次命令,只获取其中的一小部分,这样就保证了当前这一次操作不会太卡~原创 2023-07-30 11:51:33 · 1251 阅读 · 0 评论 -
深入学习 Redis - 深挖经典数据类型之 zset
Zset 是一个有序且唯一的集合,在 zset 中的 member 同时引入了一个属性 score(分数),支持浮点类型,也就是说每一个 member 都安排一个分数,并且默认按照分数进行升序排序.原创 2023-07-27 15:27:17 · 7969 阅读 · 2 评论 -
深入学习 Redis - 深挖经典数据类型之 set
redis 中的 set 就是一个集合,集合就是把一些关联的数据放在一起,我们把集合中的元素叫 member原创 2023-07-22 07:00:00 · 958 阅读 · 0 评论 -
深入学习 Redis - 深挖经典数据类型之 list
list 的内部结构类似于 “双端队列”(deque),元素是有序的,并且允许元素重复,因此头插和尾插的效率很高,可以当作一个 栈 / 队列 来使用,约定最左侧元素下标是 0,并且是是支持负数下标.原创 2023-07-21 07:00:00 · 577 阅读 · 0 评论 -
深入学习 Redis - 深挖经典数据类型之 hash
哈希表可以说是所有数据结构中最重要的,既是日常开发中最常用的,也是面试考察的重点.Redis 自身已经是键值对结构了,但 value 实际上还是一些个键值对(哈希表)原创 2023-07-20 09:51:02 · 2690 阅读 · 0 评论 -
深入学习 Redis - 深挖经典数据类型之 string
Redis 中的 string 是直接按照二进制数据的方式进行存储的,也就是说不会进行任何编码转化,存的是啥,取出来还是啥(不同于 mysql ,插入中文就会失败).不仅可以存储文本数据、整数、普通文本字符串、JSON、xml,还可以存储二进制数据(图片、视频、音频...),但是 Redis 对于 string 类型限制了大小最大是512M(不要记这个数字,因为可以配置),一般不会存放像音频视频这种比较大的数据,因为 Redis 是单线程模型,希望进行的操作都能比较迅速.原创 2023-07-19 17:06:08 · 1849 阅读 · 0 评论 -
深入学习 Redis - 常用数据类型,结构认识
可能大家记得最多的就是 HashMap 的相关数字,比如,链表长度达到 xx ,就会变成红黑树,负载因子达到 xx 就会触发扩容,在实际的工作中,遇到的场景,和上述数字就不一定合适了。Redis 底层在实现上述数据类型的时候,会在源码层面,针对上述实现进特定的优化,达到 节省时间 / 节省空间 的效果,也就是说,内部具体实现的编码方式,还会有变数.鸭脖店,承诺卖给你的这个东西吃起来和鸭脖是一样的,但是内部的数据结构,是否真的是鸭脖,可能就根据实际情况,做出一定的优化.,可能在特定场景下使用别的数据结构.原创 2023-07-18 10:38:09 · 1422 阅读 · 0 评论 -
深入学习 Redis - 虽然是单线程,为啥效率这么高,速度这么快呢?
疑问:redis 虽然是单线程,为啥效率这么高?速度这么快呢?你为啥使用 redis 呢?注意,我们无论比较的是哪一个特性,都是以 mysql、oracle、sql server 作为参照的~那么主要有以下几个方面~原创 2023-07-18 07:00:00 · 283 阅读 · 0 评论 -
深入学习 Redis - 全局命令、过期策略如何实现、高效定时器原理
Ps:网上经常有种错误的说法:" redis 中采用定时器的方式来实现过期 key 删除",实际上是没有的,这也很难考证,个人猜测是:"基于定时器实现,势必就要引入多线程了(基于优先级队列或者时间轮实现),而 redis 早期版本就是奠定了点线程的基调,多线程的引入就打破了作者的初衷~"expire 的作用是给指定的 key 设置过期时间,单位是秒, 但是对于计算机来说,秒是一个很长的时间,因此也可以使用 pexpire ,这是毫秒级别的,超过这个时间的值,就会被自动删除.原创 2023-07-17 21:01:10 · 1168 阅读 · 0 评论 -
深入学习 Redis - 为什么我要来安利你学习 Redis ?
主要是,她是真的快啊!!!Redis 是一个使用内存存储数据的中间件,一般作为 内存数据库、缓存、消息队列,接下来就具体带你了解一下她的特性以及使用场景,是真的香~原创 2023-07-16 11:41:18 · 578 阅读 · 0 评论