Redis
文章平均质量分 69
Redis 学习笔记
Mr.anla
也许这才是骑士的真谛,永远充满激情,永远心怀赤诚,永远在路上,永远少年!
展开
-
redis(缓存)
访问的 key 在 Redis 和 数据库中都不存在, 这样的 key 并不会被用户获取到, 也不会被更新到Redis 中, 后续若是仍有此请求, 仍会访问数据库 (会导致数据库压力变大)当 Redis 作为 MySQL 缓存, 刚刚启动的时候, 会有大批 热点数据 生成到 Redis 中, 此时会造成 MySQL 的压力很大。的容量是有限的, 对于热点数据的不断插入, 需要把一些 “不是那么热门” 的数据删除, 对此。– 记录每个 key 的访问次数, 每次淘汰访问次数最少的 key。原创 2024-04-14 15:34:33 · 602 阅读 · 2 评论 -
Redis (分布式锁)
分布式系统下, 会涉及到多个进程同时访问同一个公共资源的情况, 此时就需要通过锁来做互斥操作, 这个锁就被称为分布式锁分布式锁的本质: 使用一个或一组服务器来记录 加锁状态把 Redis 中存储的一个键值对, 当作锁当其他进程使用公共资源前, 都需要尝试往 Redis 中存储该键值对, 视为加锁操作, 如果该键值对已存在, 则加锁失败, 不能使用公共资源当占用公共资源的进程结束使用后, 由该进程把 Redis 中的 “锁” 删除掉, 视为解锁操作Redis 可用作分布式锁的原因。原创 2024-04-14 15:34:26 · 749 阅读 · 0 评论 -
Redis(哨兵模式)
问题: redis 主从复制模式下, 一旦主节点由于故障不能提供服务, 需要人工进行主从切换, 同时大量客户端需要被通知切换到新的主节点上, 对于有一定规模的应用来说, 对于人力的资源消耗会很大.解决: 通过哨兵对主从结构进行监控, 一旦出现主节点挂了的情况, 自动的选举新主节点, 搭建新主从结构, 并主动通知客户端进行主节点切换.原创 2024-04-13 15:17:10 · 912 阅读 · 0 评论 -
Redis(主从模式)
在若干个 Redis 节点中, 其中一个是主节点, 其余是从节点从节点上的数据随主节点变化, 从节点与主节点保持一致主节点数据允许修改和读取, 从节点数据只允许读取不允许修改tips: 由于数据的同步,主节点只能同时存在一个, 不然会出现 谁跟谁同步, 谁与谁保持一致等问题 (这就是集群的内容了)原创 2024-04-13 14:39:54 · 992 阅读 · 0 评论 -
Redis(事务)
本篇博客中 Redis 事务是和 MySQL 事务对比来说的(要不我也不会了 …)原创 2024-04-10 22:19:53 · 450 阅读 · 0 评论 -
Redis(持久化 -- RDB & AOF)
redis 是一个内存数据库, 也就是说本身是不持久的(但是快[效率高]), 于是 Redis 提供了持久化机制 — RDB 和 AOF。, 都记录到一个文件中, 当 Redis 重启的时候, 会读取这个 AOF 文件的内容(一堆操作), 来恢复数据 .缓冲区: AOF 机制会将用户操作/命令, 先写入到缓冲区, 积累一些后,再统一写入硬盘 AOF 文件末尾。以独立日志的方式记录每次写命令, 重启时重新执行 AOF 文件中的命令以达到恢复数据的目的 .二者都是对 Redis 数据的硬件备份, 区别在于。原创 2024-04-10 22:17:28 · 1347 阅读 · 0 评论 -
SpringBoot 操作 Redis
对 Redis 中的每个类型进行了封装, 使用对应类型的对应方法要先选择操作类型。SpringBoot 是通过。对 Redis 进行操作。原创 2024-04-21 14:36:22 · 437 阅读 · 0 评论 -
redis-学习笔记(Jedis zset 简单命令)
zadd , 插入的第一个参数是 zset , 第二个参数是 score, 第三个参数是 member 成员。zrangeWithScore 返回 key 对应的 对应区间内的。删除 zset 中指定的元素 ,返回的是 删除成功的元素个数。zrange 返回 key 对应的 对应区间内的。返回 key 对应的 zset 的长度。返回 zset 中选定元素的 排名。获取 zset 中成员的 得分。内部依据 score 排序。查找不到元素返回 null。原创 2023-12-13 20:09:08 · 619 阅读 · 0 评论 -
redis-学习笔记(Jedis hash简单命令)
hmget 的返回值是一个一个 List 列表 (参数仍是变长参数)注意, hmset 里面插入的是一个 Map。往 hash 里面塞数据和获取数据。批量插入数据, 获取数据。hkeys 获取所有的。hvals 获取所有的。原创 2023-12-13 19:46:11 · 520 阅读 · 0 评论 -
redis-学习笔记(Jedis set 简单命令)
sinterstore 将交集存储到某一个 set 中去, 返回的是交集的个数。sadd 往 set 中添加数据, 第二个参数仍是变长参数。smembers 查看 set 中的元素。判断在 set 中该值存不存在。随机删除一个 set 中的值。查看 set 中元素的数量。sinter 返回交集的值。求多个 set 的交集。原创 2023-12-13 18:53:15 · 478 阅读 · 0 评论 -
redis-学习笔记(Jedis list简单命令)
lpush 头插, 第二个参数为变长参数, 即可以一次往里面添加 N 个值lrange 获取列表某一下标区间的内容, 注意返回值类型代码演示。原创 2023-12-13 17:32:23 · 577 阅读 · 0 评论 -
redis-学习笔记(Jedis string 简单命令)
incrBy 使 key 对应的 vlaue 增加 increment。如果 string 中为数字的话, 可以进行自增和自减操作。可以看出,参数都是可变参数 (就是说, 可以写任意个)获取和设置 string 类型中 某一区间的值。decr 没有维护浮点精度, 可以通过。incrByFloat 可以操作浮点精度。这种负数操作来表示 " - "往字符串的末尾拼接字符串。批量设置和获取键值对。原创 2023-12-13 17:01:18 · 495 阅读 · 0 评论 -
redis-学习笔记(Jedis 通用命令)
当 redis 中存在该键值对时, 返回 true。如果键值对不存在, 返回 false。expire 的参数是对应的 key。ttl 的参数也是对应的 key。expire : 设置过期时间。ttl : 查看剩余过期时间。判断该 key 值是否存在。获取所有的 key 值。返回 key 值的类型。清空全部的数据库数据。*代表匹配任意个字符。原创 2023-12-13 11:33:10 · 551 阅读 · 0 评论 -
redis-学习笔记(Jedis 前置知识)
咱们可以实现编写出一个自定义的 Redis 客户端因为 Redis 公开了自己使用的自定义协议 ---- RESP协议清楚了, 那么通信数据格式就清除了, 就能完成各层次之间的数据传输, 就能开发服务器和客户端RESP — Redis 的 序列化 协议简单好实现快读进行解析肉眼可读知道了协议, 我们就能实现客户端, 实现了客户端, 就可以使用 客户端(idea, eclipse …) 来操作 redis, 而不是只能使用 redis 自带的命令行的模式。原创 2023-12-12 17:01:28 · 518 阅读 · 0 评论 -
redis-学习笔记(Zset)
Zset 有序集合, 这里的有序是指升序 / 降序排序的规则是, 给每个 member 引入了一个 score (浮点类型), 根据 score 进行排序Zset 集合特点: 有序, 唯一 (member 唯一)其底层数据结构实现有: ziplist , skiplist (跳表)往有序集合中, 添加分数和元素返回新增成功的元素个数分数相同, 会按照元素自身字符串字典序来排列。原创 2023-12-05 14:15:01 · 919 阅读 · 0 评论 -
redis-学习笔记(set)
Set 集合是有序的, 这里的有序是指元素具有唯一性( 不可重复), 因此 [1,2,3] 和 [1,3,2] 是一样的集合其实现的几个底层逻辑: intset (整数集合), hashtable (哈希表)往集合中添加元素获取集合中的所有值判断当前元素是否在集合中scard key查看集合的元素个数随机删除 count 个 key (官方承诺, 随机删!!!从 key1 中剪切元素, 粘贴到 key2 中返回值为 0 , 移动失败(source 中不存在该值)返回值为 1 , 移动成功。原创 2023-12-05 10:26:08 · 358 阅读 · 0 评论 -
redis-学习笔记(list)
当前的线程卡在这里, 不继续执行直到满足一定的条件后, 被唤醒。原创 2023-12-04 21:19:28 · 1448 阅读 · 0 评论 -
redis-学习笔记(hash)
像之前的 hkeys, hvals, hgetall 都是一次性遍历, 具有很高的风险, 但是渐进式遍历类似于, 敲一次命令, 遍历一部分, 再敲一次, 再遍历一部分…连续多次执行, 以完成整个查询操作, 中间可以穿插其他的命令操作, 因此不会造成查询耗时太长, 阻塞 redis。我也不太会这个, 你就把他, 理解成分页查询, 一次最多取多少, 第一行返回的游标代表, 你下次从哪里选择的起点(输入其他的数字可能会查重复了)查询 key 下的所有 field, 以及所有的 hash 对应的值。原创 2023-12-04 19:31:59 · 514 阅读 · 0 评论 -
redis-学习笔记(string)
redis 中的字符串, 是按照二进制的方式存储和读取的, 即存啥取啥, 所以一般不会出现乱码问题(乱码问题是因为存储和读取时使用的编码方式不一样, 但是 redis 没有编码转换)redis 限制了 string 的大小 : 512M, 因为希望进行的操作能够比较快速, 越大越慢。原创 2023-12-04 17:00:15 · 987 阅读 · 0 评论 -
redis-学习笔记(string , hash , list , set , zset 前置知识)
当你使用上述的某一数据结构, redis 会给你声明, 我给你一个符合该复杂度的数据结构, 但是底层如何实现, 用什么实现, 是不是我声明的这个数据结构, 你别管, 这个具体的数据实现方式, 就是内部编码。原创 2023-11-15 11:36:24 · 63 阅读 · 2 评论 -
redis-学习笔记(通用命令)
(没事别乱用, redis 一般是替 MySQL 负重前行的, 生产模式下[正式工作], 一个 Redis 中贼拉多数据, 你扫一遍其他任务还做不做了, 查询 redis 失败后, 会去直接查询数据库(MySQL …value 对应的格式: none , string , list , set , zset , hash , stream。删除指定 key, 删了key,该 key 对应的 value 自然也不存在了。当数据大小不同时, 即使是同一类型的数据存储, 他们的底层编码方式也不一样。原创 2023-11-15 11:35:13 · 97 阅读 · 0 评论 -
redis-学习笔记(redis 单线程模型)
redis 只使用一个线程, 来处理所有命令请求, 所以当多个请求同时到达 redis 服务器, 这些请求会在队列中排队, 再等待 redis 服务器 一个一个将队列里的请求取出执行, 因此, 微观上讲, redis 服务器是串行 / 顺序执行这多个命令的.(老板向员工分派任务, 只要说你去整理一下报表, 具体表的结构, 内容, 整理方式 etc, 不需要老板再给你详细说了吧, 那只是分一下任务, 自然短 - 平 - 快!原创 2023-11-15 11:11:27 · 81 阅读 · 0 评论 -
redis-学习笔记(概念, 相关名词, 特性, 优势: 快)
更复杂的东西了,xdm 自己搜 (其实简单理解就是字面意义, 我是老板, 下面有几十个员工, 分派任务很麻烦, 但是中间有个经理, 我就只把任务告诉经理就 ok, 可以减少。中的大杀器, 单机系统中, 直接使用变量存储数据, 会比使用 redis 快得多. (redis 是的,可以把自己的内存分配给别的。构成分布式的一个比较奇特的结构, 多个服务器节点中, 一个是主, 其余是> 从. 从节点的数据, 要从主节点同步.使用, 相对于 MySQL 来说, 存储空间有限是最大的劣势,但因为其快,所有更多作为。原创 2023-11-14 11:34:28 · 41 阅读 · 0 评论