Redis专栏
文章平均质量分 94
从Redis初阶到Redis进阶
十二分精神~
就算将来一无所有,我也不缺重头再来的勇气
展开
-
Redis的事务是什么样子的?Redis的事务和MySql的事务的区别在哪?watch命令的作用是什么?
有这样一种场景,客户端1开启了事务,并且设置了 key,但是,在执行事务之前,客户端2 修改了key,此时,按照常理来讲,key 应该是 222,但是,因为在客户端1中,只是将命令放到了队列中,并没有实际的去执行,只有在输入 exec 命令之后,才会执行,所以,最终的 key 的 value 是 111。从下图可以看到,在开启事务后,set 命令并没有生效,只是返回了一个 queued,这就说明,当前的命令,只是被放入了事务队列中,并没有生效,此时,如果通过另一个客户端获取的话是获取不到的。原创 2024-08-04 20:46:42 · 820 阅读 · 0 评论 -
Redis的AOF持久化策略(AOF的工作流程、AOF的重写流程,操作演示、注意事项等)
其实,重写的时候,并不关心 aof 文件中原来都有啥,只是关心内存中最终的数据状态,所以,在进行重写时,并不需要再去遍历旧的 aof 文件,把最终结果整理出来,因为,我们只需要获取到最终的数据即可,而最终的数据现在也就是在内存中保存着的呀,所以,子进程只需要把内存中当前的数据,获取出来,以 AOF 的格式写入到新的 aof 文件中即可。此处的子进程写数据的过程,非常类似于 RDB 生成一个快照文件,只不过,RDB 这里是按照二进制的方式生成的,AOF 重写,则是按照 AOF 这里要求的文本格式来生成的。原创 2024-07-19 23:35:50 · 1229 阅读 · 0 评论 -
Redis 的 RDB持久化策略(详细讲解,注意事项,操作演示)
说到一个数据有没有持久性也就是说,当这台主机或进程重启后,数据是否还存在,而在内存中存储数据时,是没有持久性的,只要重启,数据就会丢失,而在硬盘上存储数据时,就可以保证持久性。对于 Redis 来说,Redis 是一个内存数据库,是把数据存储到了内存中,如果想要让 Redis 也做到持久,就需要让数据存储到硬盘上。如果只单一的存储到硬盘上,那么它和Mysql数据库不就一样了么,而 Redis 相比于 Mysql 这样的关系型数据库,最明显的一个优势就是 :快。原创 2024-07-16 10:25:24 · 1343 阅读 · 0 评论 -
Java 客户端操作 Redis 命令(端口号映射方法,命令演示,注意事项)
通过上述的方式,此时在我们的Java客户端代码上,访问 127.0.0.1:8888 ,就相当于访问 Linux 主机上的 6379 端口了,这个 8888 端口就是 ssh 程序监听的端口。原创 2024-07-14 15:53:38 · 972 阅读 · 0 评论 -
Redis 中String类型操作命令(命令演示,时间复杂度,返回值,注意事项)
字符串类型是 Redis 中最基础的数据类型,在讲解命令之前,我们先讨论以下 Redis 中的 String 类型,关于 Redis 中的 String 类型,要注意三点:① Redis 中的 “键” 都是 String 类型,而 Redis 中的 value 是多种类型的,而在这多种中类型中,它们存储的元素类型也都是 String 类型,比如,list 类型,set 类型,存储的元素值是 String 类型。原创 2024-07-12 18:07:05 · 962 阅读 · 0 评论 -
Redis 中Sorted Set 类型命令(命令语法、操作演示、命令返回值、时间复杂度、注意事项)
前面文章讲解了 Set 类型,Set 类型有一个特点,就是集合中的元素是唯一的。,依靠这个分数,就维护了集合中元素的有序性,什么意思呢,举个例子:在三国中,每一个武将都是有武力值的,我们根据武力值就可以对武将进行一个排名,如下图:在 zset 类型中,默认是按照**“升序”**的方式排列的,提供了一组获取元素分数、元素范围查询等等功能命令,下面就来介绍一些主要并且常用的命令。原创 2024-07-09 19:16:21 · 1056 阅读 · 0 评论 -
Redis中list类型操作命令(操作演示、命令语法、返回值、时间复杂度、注意事项等)
如果 list 中没有元素,blpop、brpop 取元素时就会阻塞等待(类似于阻塞队列),同时也设置阻塞等待的时间,如果在超过等待时间之前,list 中有了元素,就直接弹出,如果等到超过这个最大等待时间,就不在进行等待,而且在等待的过程中,Redis 可以去执行其他的命令。如果指定的 key 存在,从“右侧”向 list 中插入一个或多个元素,如果不存在,则插入失败,和 lpushx 命令用法一样。注意:如果指定的下标越界,没有那么多的元素,那么,在获取的时候,列表中有多少个元素就返回多少个元素。原创 2024-07-06 16:16:57 · 1401 阅读 · 0 评论 -
Redis中hash类型的操作命令(命令的语法、返回值、时间复杂度、注意事项、操作演示)
注意:在 Redis 中,“键” 称为 key,“值” 称为 value,如果value 的类型是哈希类型,则 “键” 称为 field,“值” 称为 value。注意:返回值是一个字段一个值相对着,同时呢,这也是个危险的操作,如果字段特别多的情况下,就可能使 Redis 阻塞。:O(k),因为插入时,可以插入多个,所以,k 表示插入的键值对(field-value) 的个数。:O(k),k 表示删除的键值对(field-value) 的个数。将 hash 中字段(field)对应的值添加指定的值。原创 2024-07-03 21:13:24 · 2673 阅读 · 0 评论 -
Redis 中的通用命令(命令的返回值、复杂度、注意事项及操作演示)
而 Redis 经常是用作缓存,是替 Mysql 冲锋陷阵的,万一 Redis 被Keys*给阻塞住了,此时其他的查询 Redis 的操作也就超时了,那么所有的查询请求就会给到 Mysql 上,此时突然一大波请求来到给到Mysql,就有可能给Mysql一个措手不及,给 Mysql 也搞挂了,此时就出现大问题了,如果没有及时的发现及时的恢复的话,会出现很大的问题!**时间复杂度:**O(k) ,注意这个k不是所有的数据,而是因为它是可以查看多个key是否存在的,所以这个k是指定的 key 的数量。原创 2024-07-01 20:11:59 · 1194 阅读 · 0 评论 -
分布式系统的演化(单机架构/应用符合和存储服务分离架构/应用服务集群架构/主从分离架构/冷热分离架构)
上述都是针对请求量太大时所做的解决策略,但是,引入分布式系统,不光要能够去应对更高的请求量,同时也要能应对更大的数据量,当数据太多时,也可能会存在一台主机存不下的情况,可以使用多台主机存储,针对数据库进行进一步的拆分,本来一个数据库服务器上有多个数据库,现在引入多个数据库服务器,每个数据库服务器存储一个或多个数据库,如果某个表特别大,大到一台主机存不下,也可以针对表进行拆分,拆分成多个表分布在不同的主机上。而现在计算机硬件发展也是非常快的,哪怕只有一台主机,这一台主机的性能也是非常高的。原创 2024-06-23 06:52:52 · 1007 阅读 · 0 评论