![](https://img-blog.csdnimg.cn/e4b32ec684fc4401995d9dda6a8f7c93.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 83
Redis从入门到精通,从精通到实现
友人和他的朋友们
公众号:友人和他的朋友们 Java 全栈文档库 www.codermast.com 编程桅杆的作者
展开
-
Redis进阶 - Lua语法
原文首更地址,阅读效果更佳!Redis进阶 - Lua语法 | CoderMast编程桅杆。原创 2023-08-29 09:00:00 · 237 阅读 · 0 评论 -
Redis进阶 - JVM进程缓存
原文首更地址,阅读效果更佳!原创 2023-08-28 17:32:58 · 1286 阅读 · 0 评论 -
Redis进阶 - Redis分片集群
原文首更地址,阅读效果更佳!Redis进阶 - Redis分片集群 | CoderMast编程桅杆。原创 2023-06-29 18:10:59 · 346 阅读 · 0 评论 -
Redis进阶 - Redis哨兵
原文首更地址,阅读效果更佳!Redis进阶 - Redis哨兵 | CoderMast编程桅杆思考slave 节点宕机恢复以后可以找 master 节点同步数据,那么 master 节点宕机怎么办?原创 2023-06-27 22:29:34 · 2617 阅读 · 4 评论 -
Redis进阶 - Redis主从
如果 slave 的 offset 小于 master 的 offset,说明 slave 数据落后于 master,需要更新。因此 slave 做数据同步,必须想 master 声明自己的 replication id 和 offset,master 才可以判断到底需要同步哪些数据。如果 slave 断开时间过久,导致数据被覆盖,则无法实现增量同步,只能再次全量同步。单节点 Redis 的并发能力是有上限的,要进一步提高 Redis 的并发能力,就需要搭建主从集群,实现读写分离。原创 2023-06-25 00:39:45 · 669 阅读 · 0 评论 -
Redis进阶 - Redis持久化
当子进程写新的 RDB 文件时,此时主进程大量修改数据,则需要对数据进行拷贝,当主进程需要对所有的数据都进行修改时,则需要两倍原来的内存,故我们在配置 Redis 服务时,不能将所有的实际内存分配给 Redis ,需要预留一部分缓冲空间。fork 的速度是非常快的,因为 fork 只复制了对应的页表,而不是复制真实的数据,类似于只复制数据的索引。默认情况下会在当前目录生成一个 dump.rdb 的文件,下一次启动 Redis 时,默认会加载这个文件,恢复 Redis 数据。RDB 会在什么时候执行?原创 2023-06-23 18:02:40 · 1112 阅读 · 0 评论 -
Redis原理 - 内存策略
原文首更地址,阅读效果更佳!Redis 本身是一个典型的 key-value 内存存储数据库,因此所有的 key、value 都保存在之前学习过的 Dict 结构中。不过在其 database 结构体中,有两个 Dict :一个用来记录 key-value;另外一个用来记录 key-TTL答:利用两个 Dict 分别记录 key-value 和 key-ttl答:并不是到期立刻删除,而是采用和。原创 2023-06-22 23:54:18 · 3607 阅读 · 0 评论 -
Redis原理 - 通信协议RESP
基于 Socket 自定义 Redis 客户端。try {// 1.建立连接// 2.获取输出流、输入流// 3.发出请求// 3.1.获取授权 auth codermast// 3.2.set name 小鹏sendRequest("set", "name", "小鹏");// 4.解析响应// 3.2.set name 小鹏// 4.解析响应// 3.2.set name 小鹏// 4.解析响应// 5.释放连接try {原创 2023-06-22 23:53:27 · 1048 阅读 · 0 评论 -
Redis原理 - Redis网络模型
原文首更地址,阅读效果更佳!Redis原理 - Redis网络模型 | CoderMast编程桅杆。原创 2023-06-22 23:50:33 · 1090 阅读 · 0 评论 -
Redis原理 - IO详解
能监听的 FD 最大不超过 1024 个每次 select 都需要把所有要监听的 FD 都拷贝到内核空间每次都要遍历所有 FD 来判断就绪状态poll 利用链表解决了 select 中监听 FD 上限的问题,但是依然要遍历所有的 FD ,如果监听较多,性能会下降基于 epoll 实例中的红黑树保存要监听的 FD ,理论上无上限,而且增删改查效率都非常高,性能不会随监听的 FD 数量增多而产生显著的下降。原创 2023-06-21 11:23:20 · 1622 阅读 · 0 评论 -
Redis原理 - 五种数据类型的底层结构关系
字符串对象StringString 是 Redis 中最常见的数据存储类型。其基本编码方式是 RAW ,基于简单动态字符串(SDS)实现,存储上限为 512 MB。如果存储的 SDS 长度小于 44 字节,则会采用EMBSTR编码,此时 object head 与 SDS 是一段连续空间。申请内存时只需要调用一次内存分配函数,效率更高。原创 2023-06-21 11:24:22 · 1503 阅读 · 0 评论 -
Redis原理 - 数据结构的底层实现
动态字符串SDS#基本概念Redis 中保存的 Key 是字符串,Value 往往是字符串或者字符串的集合。可见字符串是 Redis 中最常见的一种数据结构。Redis 是使用 C 语言来编写的,C 语言中也有字符串,但是 Redis 中并没有直接使用 C 语言的字符串,这是因为 C 语言中字符串存在着很多的问题:获取字符串长度需要进行运算非二进制安全,不能包含特殊字符因为C字符串以空字符作为字符串结束的标识,而对于一些二进制文件(如图片等),内容可能包括空字符串,因此C字符串无法正确存取;原创 2023-06-21 11:20:17 · 1502 阅读 · 0 评论 -
Redis原理 - RedisObject对象机制
原文首更地址,阅读效果更佳!Redis原理 - RedisObject对象机制 | CoderMast编程桅杆。原创 2023-06-19 00:53:41 · 684 阅读 · 0 评论 -
Redis客户端 - RedisSerializer
自定义的序列化方式也加进去了对引用类型的序列化,我们来实际测试一下。编写一个 User 类@Data类中属性需要给出 set 和 get方法将 User 对象存储至 Redis@Test// 插入一条 Object 类型的数据// 获取一条 Object 类型的数据虽然 JSON 的序列化方式可以满足我们存储对象的需求,为了在反序列化时知道对象的类型,将对象的类路径地址也序列化进 JSON 结果中,存入 Redis ,会带来额外的资源消耗。原创 2023-06-17 18:09:43 · 1449 阅读 · 0 评论 -
Redis客户端 - SpringDataRedis
提供了对不同 Redis 客户端的整合 (Lettuce 和 Jedis)提供了 RedisTemplate 统一 API 来操作Redis支持 Redis 的发布订阅模型支持 Redis 哨兵和 Redis 集群支持基于 Lettuce 的响应式编程支持基于 JDK、JSON、字符串、Spring对象的数据序列化和反序列化支持基于 Redis 的 JDKCollection 实现。原创 2023-06-17 18:08:39 · 1050 阅读 · 0 评论 -
Redis客户端 - Jedis连接池
在单线程环境中可以不使用Jedis连接池,但是多线程环境下必须使用Jedis连接池,并且使用Jedis连接池较为可靠,我们不必关注与资源的获取和释放等问题,可以将注意力集中于业务逻辑上。Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们使用Jedis连接池代替Jedis的直接连接方式。Redis客户端 - Jedis连接池 | CoderMast编程桅杆。原文首更地址,阅读效果更佳!原创 2023-06-16 19:21:56 · 263 阅读 · 0 评论 -
Redis客户端 - Jdies快速入门
Jedis是Redis 的 Java 客户端,专为性能和易用性而设计。原创 2023-06-16 19:18:53 · 759 阅读 · 2 评论 -
Redis入门 - Redis Stream
原文首更地址,阅读效果更佳!Redis入门 - Redis Stream | CoderMast编程桅杆Redis入门 - Redis Stream Redis Stream 是 Redis 5.0 版本新增加的数据结构。Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。原创 2023-06-16 19:17:54 · 1516 阅读 · 0 评论 -
Redis入门 - Lua脚本
原文首更地址,阅读效果更佳!Redis入门 - Lua脚本 | CoderMast编程桅杆Redis 脚本使用 Lua 解释器来执行脚本。Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。原创 2023-06-16 19:18:27 · 1874 阅读 · 0 评论 -
Redis入门 - 事务
Redis的事务和MySQL的事务是不同的,MySQL的事务要么全部执行,要么全部不执行。单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。原文首更地址,阅读效果更佳!原创 2023-06-16 19:17:18 · 1410 阅读 · 0 评论 -
Redis入门 - 发布订阅
此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel) 发布消息,订阅该频道的每个客户端都可以收到该消息,Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis入门 - 发布订阅 | CoderMast编程桅杆。Redis 客户端可以订阅任意数量的频道。原创 2023-06-16 16:02:19 · 1515 阅读 · 0 评论 -
Redis入门 - 3种特殊数据类型
说明在我们平常的业务中基本只会使用到Redis的基本数据类型(String、List、Hash、Set、Sorted Set),特殊类型(Geo、Bitmap、Hyperloglog)类型只有在特殊的业务场景下会使用到,通常只需要掌握基本数据类型即可,特殊类型作为了解即可。原创 2023-06-16 15:57:29 · 1393 阅读 · 0 评论 -
Redis入门 - 5种基本数据类型
原文首更地址,阅读效果更佳!Redis入门 - 5种基本数据类型 | CoderMast编程桅杆说明在我们平常的业务中基本只会使用到Redis的基本数据类型(String、List、Hash、Set、Sorted Set),特殊类型(Geo、Bitmap、Hyperloglog)类型只有在特殊的业务场景下会使用到,通常只需要掌握基本数据类型即可,特殊类型作为了解即可。原创 2023-06-16 19:14:57 · 1835 阅读 · 0 评论 -
Redis入门 - 基础通用指令
在正式介绍Redis数据结构及其操作指令之前,我们需要先掌握一些最基础的通用指令。可以通过 help [command]可以查看⼀个命令的具体⽤法!这些都是Redis操作过程中的一些常见指令。原文首更地址,阅读效果更佳!原创 2023-06-16 15:47:10 · 1349 阅读 · 1 评论 -
Redis入门 - Redis概念和基础
前台启动Redis后,就是如上界面,此时命令终端会一直响应Redis服务,而无法进行其他操作,要进行其他指令操作时,则必须关闭Redis服务,很不方便,此时我们可以使用后台启动。这里要注意的是,在使用redis-cli客户端连接redis服务时,需要保证redis服务是开启的,无论是在远程连接或者本地连接,这是新手阶段容易忽视的一点。笔者的电脑系统为macos,故就演示Mac环境下的图形化客户端,windows系统下的客户端种类很多,网络上的资源也很多,这里就不赘述。这也是一种常见的文档编写规范。原创 2023-06-16 12:54:11 · 1966 阅读 · 0 评论