![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 80
可乐不解渴
这个作者很懒,什么都没留下…
展开
-
14.Redis 主从复制
单点问题.单个 redis 节点, 可⽤性不⾼。单个 redis 节点, 性能有限。主从复制的特点:Redis 通过复制功能实现主节点的多个副本。主节点⽤来写, 从节点⽤来读. 这样做可以降低主节点的访问压⼒。复制⽀持多种拓扑结构,可以在适当的场景选择合适的拓扑结构。复制分为全量复制, 部分复制和实时复制。主从节点之间通过⼼跳机制保证主从节点通信正常和数据⼀致性。主从复制配置的过程:主节点配置不需要改动。原创 2023-09-05 14:13:31 · 618 阅读 · 0 评论 -
13.Redis 事务
假设此时有一个 key,value 为 111,此时有两个客户端,客户端1先开启一个事务,并将key的value设置为222,此时客户端2不开启事务直接set key 333,此时客户端1执行exec命令,让其执行事务,此时就容易引起歧义,是到底key的值是222还是333呢。开启事务的时候,此时客户端输入的命令,就会发给服务器并且进入这个队列中(而不是立即执行)。都是把⼀系列操作绑定成⼀组。作用:在执⾏事务的时候, 如果某个事务中修改的值, 被别的客户端修改了, 此时就容易出现数据不⼀致的问题。原创 2023-09-04 03:01:35 · 501 阅读 · 0 评论 -
12.redis 持久化
Redis 提供了两种持久化⽅案:RDB 和 AOF。RDB 视为内存的快照,产⽣的内容更为紧凑,占用空间较⼩,恢复时速度更快。但产⽣ RDB 的开销较⼤,不适合进⾏实时持久化,⼀般⽤于冷备和主从复制。AOF 视为对修改命令保存,在恢复时需要重放命令。并且有重写机制来定期压缩 AOF ⽂件。RDB 和 AOF 都使⽤ fork 创建⼦进程,利⽤ Linux ⼦进程拥有⽗进程内存快照的特点进⾏持久化,尽可能不影响主进程继续处理后续命令。原创 2023-09-03 21:17:39 · 402 阅读 · 0 评论 -
11.Redis数据库管理命令
redis 中的 database 是现成的,咱们用户不能创建新的数据库,也不能删除已有的数据库~它们之间的区别在于 flushdb 只清除当前数据库,flushall 会清楚所有数据库。默认 redis 给我们提供了 16 个数据库,名字为 数字0 到数字15。flushdb / flushall 命令⽤于清除数据库。这16个数据库中的数据是隔离的。默认我们是在0号数据中。作用:获取当前数据库中key的数量。作用:用来切换数据库。原创 2023-09-01 17:55:41 · 331 阅读 · 0 评论 -
10.Redis 渐进式遍历
渐进性遍历 scan 虽然解决了阻塞的问题,但如果在遍历期间键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏,这点务必在实际开发中考虑。不是一个命令,把所有的 key 都拿到,而是每执行一次命令,只获取到其中的一部分,这样的话就能保证当前这一次操作不会太卡。keys 命令一次性的把整个redis中所有的key都获取到,keys *但这个操作比较危险,可能会一下子得到太多的key,阻塞 redis 服务器。通过渐进式遍历,就可以做到,既可以获取到所有的 key,同时又不会卡死服务器。原创 2023-09-01 17:52:42 · 1195 阅读 · 0 评论 -
9.Redis-zset
这里的zhangsan的score(65),是按照 key里的zhangsan先乘以自己的权重值 2, 加上 key2 对应的权重值3乘以key2 zhangsan的score,即 2 * 10+ 3 * 15 = 65。作用:返回分数在 min 和 max 之间的元素个数,默认情况下,min 和 max 都是包含的,可以通过 ( 排除。作用:用于按照元素的分数范围来获取元素,默认情况下,min 和 max 都是包含的,可以通过 ( 排除。作用:返回指定元素的排名,降序,这里的排名指的就是下标。原创 2023-09-01 02:35:16 · 665 阅读 · 0 评论 -
8.Redis-set
命令时间复杂度O(k),k是元素个数O(k),k是元素个数scard keyO(1)O(1)O(n),n 是 countO(n),n 是 countO(k), k 是元素个数O(m * k)O(k),k 是多个集合的元素个数总和O(k),k 是多个集合的元素个数总和。原创 2023-08-31 16:07:02 · 736 阅读 · 0 评论 -
7.Redis-list
ps:本来是想弄成表格的,但是不会 markdown 这种将某几行的某一列合并成一个单元格这种语法,然后只能以图片的方式展现了,希望有会的人再评论区教教我,thanks~原创 2023-08-30 18:33:56 · 449 阅读 · 0 评论 -
6.Redis-hash
哈希类型中的映射关系通常称为field-value,⽤于区分 Redis 整体的键值对(key-value),注意这⾥的value是指field对应的值,不是键(key)对应的值,请注意 value 在不同上下⽂的作⽤。原创 2023-08-29 15:34:09 · 418 阅读 · 0 评论 -
4.Redis数据类型的编码方式
redis 承诺,现在当前有一个 hash 表,你可以进行 查询,插入,删除操作都保证时间复杂度为O(1),但是这个背后的实现不一定就是一格标准的hash表,可能在特定场景下,使用别的数据结构实现,但是仍然保证时间复杂度符合要求。type 命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合),但这些只是 Redis 对外的数据结构。其中内部的具体实现的数据结构(编码方式不同)还有变数。原创 2023-08-26 23:25:26 · 169 阅读 · 0 评论 -
3.Redis 单线程模型
redis 只使用一个线程来处理所有的命令请求,并不是说一个 redis 服务器进程内部真的就只有一个线程,其实也有多个线程,多个线程是再处理网络 IO。那么在多线程中,针对类似于这样的场景两个线程尝试同时对一个 变量 进行自增表面上看是自增两次,实际上可能只只增了一次。幸运的是,并不会发生这种问题,redis 服务器实际上是单线程模型,保证了当前收到的这多个请求是串行执行的!此时当前这个两个redis客户端,也相当于“并发”的发起了上述的请求。此时就意味着是否服务器这边也会存在类似的线程安全问题吗?原创 2023-08-26 17:05:43 · 931 阅读 · 0 评论 -
5.Redis-string
字符串类型是 Redis 最基础的数据类型,关于字符串需要特别注意:1.⾸先Redis中所有 key 的类型都是字符串类型,⽽且其他⼏种数据结构也都是在字符串类似基础上构建的,例如 list 和 set 的元素类型是字符串类型。2.其次,字符串类型包含⼀般格式的字符串或者类似JSON、XML格式的字符串;数字,可以是整型或者浮点型;甚⾄是⼆进制流数据,例如图片、音频、视频等。不过⼀个字符串的最大值不能超过512MB,一般不建议存储较大的图片、音频、视频等。原创 2023-08-29 01:30:32 · 527 阅读 · 1 评论 -
2.Redis 通用命令
首先把时间划分程很多小段,假设每个单元格是100ms的间隔,当有新任务进来时,先找到要存储的单元格位置并存入,如果发现设置的时间超出对应时间轮一轮的范围只需要多旋转几轮直到找到即可,并且当每过100ms时,此时就需要检查当前格子上的每一个任务,并尝试看是否能执行当前任务。另外再扫描线程检查队首元素过期时间的时候不能太频繁,此时做法就是可以根据当前时刻和队首元素的过期时间,让扫描线程进行等待,当时间到了,系统在去唤醒这个线程,此时扫描线程不需要高频扫描队首元素,把cpu的开销可以降低下来。原创 2023-08-26 15:42:37 · 590 阅读 · 0 评论 -
1.Redis 5 环境搭建
隐藏的太深了,不方便使用,可以通过软连接的方式把需要用到的关键内容设置到重用的目录中。在根据pid进行kill即可,因为此时redis被我们设置成了守护进程在配置文件中。可以通过ps或者netstat查询redis服务器的pid。进入刚刚链接好的目录下,用root用户使用vim打开。为了我们能在 Centos7中下载到 Redis5。由于在centos7默认安装的目录为。5.2 再在配置文件中,设置日志目录。之后弹出来的选项一直输入y即可。文件,然后要设置以下参数。首先要安装额外的软件源。原创 2023-08-21 15:17:14 · 350 阅读 · 0 评论