
redis
文章平均质量分 58
Redis 是完全开源免费的,是一个高性能的key-value内存数据库。
既然选择了远方,我便风雨兼程
这个作者很懒,什么都没留下…
展开
-
缓存高并发问题
当用户访问的数据既不在缓存也不在数据库中时,就会导致每个用户查询都会“穿透”缓存“直抵”数据库。这种情况就称为缓存穿透。当高度发的访问请求到达时,缓存穿透不仅增加了响应时间,而且还会引发对 DBMS 的高并发查询,这种高并发查询很可能会导致DBMS 的崩溃。缓存穿透产生的主要原因有两个:一是在数据库中没有相应的查询结果,二是查询结果为空时,不对查询结果进行缓存。原创 2024-01-24 09:58:57 · 1225 阅读 · 0 评论 -
Raft算法
若 follower 在心跳超时范围内没有接收到来自于 leader 的心跳,则认为 leader 挂了。时其首先会使其本地 term 增一。原创 2024-01-24 08:38:31 · 910 阅读 · 0 评论 -
CAP定理
CAP 定理指的是在一个分布式系统中,一致性 Consistency、可用性 Availability、分区容错性 Partition tolerance,三者不可兼得。原创 2024-01-23 17:21:27 · 426 阅读 · 0 评论 -
redis主从集群搭建
再使用 redis6380.conf 复制出两个 conf 文件:redis6381.conf 与 redis6382.conf。4.分别使用redis6380.conf、redis6381.conf与redis6382.conf 三个配置文件启动三台Redis。1.** 在 redis 安装目录中 mkdir 一个目录,名称随意。3.新建一个 redis 配置文件 redis6380.conf,该配置文件中的 Redis 端口号为 6380。个 Redis 节点相同的公共的属性。原创 2024-01-22 18:04:42 · 435 阅读 · 0 评论 -
RDB与AOF对比
RDB文件较小数据恢复较快数据安全性较差写时复制会影响性能RDB文件可读性较差。原创 2024-01-22 11:56:45 · 491 阅读 · 0 评论 -
AOF持久化过程
AOF 详细的持久化过程如下:原创 2024-01-22 10:45:27 · 422 阅读 · 0 评论 -
AOF持久化
所谓 Rewrite 其实就是对 AOF 文件进行重写整理。当 Rewrite 开启后,主进程 redis-server。创建出一个子进程 bgrewriteaof,由该子进程完成 rewrite 过程。其首先对现有 aof 文件进行。rewrite 计算,将计算结果写入到一个临时文件,写入完毕后,再 rename 该临时文件为原 aof。rewrite 计算也称为 rewrite 策略。文件名,覆盖原有文件。原创 2024-01-21 19:53:54 · 399 阅读 · 0 评论 -
写时复制技术
原本在 Unix 系统中,当一个主进程通过 fork()系统调用创建子进程后,内核进程会复制主进。程的整个内存空间中的数据,然后分配给子进程。这种方式存在的问题有以下几点:**** 写时复制技术是 Linux 系统的一种进程管理技术。原创 2024-01-21 18:50:20 · 416 阅读 · 0 评论 -
RDB持久化过程
对于 Redis 默认的 RDB 持久化,在进行 bgsave 持久化时,redis-server 进程会 fork 出一个 bgsave 子进程,由该子进程以异步方式负责完成持久化。而在持久化过程中,redis-server进程不会阻塞,其会继续接收并处理用户的读写请求。bgsave 子进程的详细工作原理如下:由于子进程可以继承父进程的所有资源,且父进程不能拒绝子进程的继承权。所以,bgsave 子进程有权读取到 redis-server 进程写入到内存中的用户数据,使得将内存数据持久化到 d原创 2024-01-21 16:02:58 · 384 阅读 · 0 评论 -
Redis事务
它们首先查看了当前拥有的资源数量,即 resources 的值。源数量可以满足自己的需求,于是修改资源数量,以占有资源。但结果却是资源出现了“超。如果事务中的命令没有语法错误,但在执行过程中出现异常,该异常不会影响其它命令。为了解决这种情况,Redis 事务通过乐观锁机制实现了多线程下的执行隔离。此时访问 age 的值,发现其仍为 19,并没有变为事务中设置的 20。当事务中的命令出现语法错误时,整个事务在 exec 执行时会被取消。exec 的提示是 exec 被忽略,事务被取消,因为之前的错误。原创 2024-01-20 21:02:14 · 355 阅读 · 0 评论 -
BitMap命令
BitMap 是 Redis 2.2.0 版本中引入的一种新的数据类型。假设平台具有注册用户数量为 N,则 BitMap 的长度至少为 N 个 bit 位,即 N/8 字节。以淘宝为例,其用户 ID 长度为 11 位(m),其注。只需上线一个用户,就立即使其中一个 bit 位置 1,最后只需统计出 BitMap 中 1 的。如果使用 BitMap 来统计,则需要先定义出一个 BitMap,其占有的 bit 位至少为注册用。册用户数量为 8 亿(N),当活跃用户数量为 8 亿/(8。原创 2024-01-20 17:20:31 · 434 阅读 · 0 评论 -
SDS(简单动态字符串)的优势
C 字符串中只能包含符合某种编码格式的字符,例如 ASCII、UTF-8 等,并且除了字符串末尾外,其它位置是不能包含空字符’\0’的,否则该字符串就会被程序误解为提前结束。对于超长字符串的遍历,会成为系统的性能瓶颈。但,由于 SDS 结构体中直接就存放着字符串的长度数据,所以对于获取字符串长度需要消耗的系统性能,与字符串本身长度是无关的,不会成为 Redis 的性能瓶颈。空间预分配策略是指,每次 SDS 进行空间扩展时,程序不但为其分配所需的空间,还会为其分配额外的未使用空间,以减少内存再分配次数。原创 2024-01-20 14:34:57 · 390 阅读 · 0 评论 -
redis测试工具
-d:指定测试 get/set 命令时其操作的 value 的数据长度,单位字节,默认值为 3。 -p:指定要测试的 Redis 的 port,若为 6379,则可省略。 -h:指定要测试的 Redis 的 IP,若为本机,则可省略。 -n:指定这些客户端发出的请求的总量,默认值为 100000。 -t:指定要测试的命令,多个命令使用逗号分隔,不能有空格。 -c:指定模拟有客户端的数量,默认值为 50。用于测试 Redis 的性能。 -q:指定仅给出总述性报告。试其它命令时该指定没有用处。原创 2024-01-16 11:19:21 · 618 阅读 · 1 评论 -
List型value操作命令
List型value操作命令原创 2022-11-11 23:06:38 · 782 阅读 · 1 评论 -
Hash型Value操作命令
Hash型Value操作命令原创 2022-11-09 21:53:51 · 702 阅读 · 0 评论 -
key操作命令
key操作命令原创 2022-10-28 16:07:52 · 825 阅读 · 0 评论 -
Redis基本命令
Redis基本命令原创 2022-10-23 20:46:52 · 112 阅读 · 0 评论 -
Redis的一些配置
Redis的一些配置原创 2022-10-14 21:39:30 · 140 阅读 · 0 评论 -
String型value操作命令
String型value操作命令原创 2022-11-05 22:18:34 · 933 阅读 · 0 评论