redis源码学习之makefile

2023-11-30
阅读 4 分钟
539
.PHONY:目标“.PHONY”的所有的依赖被作为伪目标。伪目标时这样一个目标:当使用make命令行指定此目标时,这个目标所在规则定义的命令、无论目标文件是否存在都会被无条件执行。

redis学习之主从复制

2023-10-02
阅读 1 分钟
403
Redis 主从复制(Replication)是一种用于数据备份、高可用性和负载均衡的机制,它允许将一个 Redis 服务器(称为主节点)的数据复制到一个或多个其他 Redis 服务器(称为从节点)。主从复制在 Redis 中有多种用途,包括提供数据冗余、读写分离和故障恢复。以下是关于 Redis 主从复制的详细解释:

redis学习之事务

2023-10-02
阅读 3 分钟
322
事务(Transaction)是一组数据库操作或服务端操作的集合,它们被视为一个单独的工作单元。事务具有以下四个重要的特性,通常被称为 ACID 特性:

redis学习之管道

2023-09-28
阅读 2 分钟
318
Redis pipelining is a technique for improving performance by issuing multiple commands at once without waiting for the response to each individual command. Pipelining is supported by most Redis clients.

关于golang的defer

2023-09-26
阅读 3 分钟
861
defer的执行顺序多个defer是一个栈的结构,是先进后出,下面这个代码的输出顺序是CBA。 {代码...} defer和return的顺序先执行return,再执行defer。 {代码...} 函数命名返回值遇见defer {代码...} defer和panicpanic阻断defer {代码...} defer里面的recoverdefer在panic 后依然有效 {代码...} defer中包含panicpanic仅有...

golang的垃圾回收

2023-09-26
阅读 2 分钟
696
标记-清除(mark and sweep)算法这个是Go 1.3之前使用的垃圾回收算法。我们可以看下这个算法的流程:暂停程序业务逻辑, 从根节点开始遍历内存对象,分类出可达和不可达的对象,然后做上标记。开始标记,程序找出它所有可达的对象,并做上标记。标记完了之后,然后开始清除未标记的对象。停止暂停,让程序继续跑。然后循环...

golang make和new的区别

2023-09-26
阅读 1 分钟
641
对于值类型的声明不需要在给值类型单独分配内存,是因为程序已经默认帮我们分配好了。对于引用类型的变量,我们不光要声明它,还要为它分配内容空间。要分配内存,就引出来今天的new和make。

关于golang的逃逸规则

2023-09-26
阅读 3 分钟
655
逃逸分析的目标是尽可能地减少内存的堆分配,从而提高程序的性能。编译器会尝试确定哪些变量的生命周期受限于其作用域,并且可以安全地分配在栈上。对于那些需要在函数的作用域外部仍然可用的变量,编译器会将它们分配在堆上。

golang性能优化

2023-09-25
阅读 8 分钟
1.1k
命令GODEBUG='gctrace=1' ./snippet_mem用于启用Go程序的调试和性能分析。当你设置 GODEBUG='gctrace=1' 启用 gctrace 时,Go程序将输出与垃圾收集器相关的调试信息。这对于分析程序的内存管理和性能问题非常有用。

Redis学习之aof

2023-09-25
阅读 1 分钟
610
使用 Always 策略appendfsync always在每次写入操作完成后都会执行同步操作。这是最安全的选项,因为它确保写入操作被持久化到磁盘,但它也可能会导致性能下降,因为每个写入操作都需要等待同步完成。

Redis的底层类型之sort set

2023-09-25
阅读 1 分钟
543
sorted sets有序集合ZADDZCARDZCOUNTZDIFFZINCRBYZINTERZINTERCARD上面这些命令都是基础的ZLEXCOUNT计算有序集合中指定字典区间内的成员数量 {代码...} ZMPOPZMSCORE这里是POP和SCORE的操作多个key的指令ZPOPMAXZPOPMINZRANDMEMBERZRANGEZRANGEBYLEXZRANGEBYSCOREZRANGEBYSCORE 这个要被遗弃的的指令,用ZRANGE代替(加上...

Redis的底层类型之list

2023-09-25
阅读 1 分钟
439
Redis lists are linked lists of string values. Redis lists are frequently used to:Redis 列表是由字符串值组成的链接列表。Redis 列表经常用于:

Redis的底层类型之json

2023-09-25
阅读 3 分钟
568
The JSON capability of Redis Stack provides JavaScript Object Notation (JSON) support for Redis. 可以看到redis json是输入RedisStack的一部分。

Redis的底层类型之string

2023-09-25
阅读 2 分钟
678
KEEPTTL: 用于在使用 SET 命令设置键的值时,保留键的 TTL(Time To Live)信息。当你使用 SET 命令来更新一个已经存在的键时,默认情况下会重置键的 TTL,也就是键的生存时间会被重新计算。但是如果你希望保留原有的 TTL,可以使用 KEEPTTL 选项。

Redis的底层类型之set

2023-09-25
阅读 2 分钟
560
A Redis set is an unordered collection of unique strings (members).无序的字符串集合

Redis的底层类型之hash

2023-09-25
阅读 1 分钟
401
hashHSETHDELHEXISTSHGETHGETALLHINCRBYHINCRBYFLOATHKEYSHLENHMGETHMSETHRANDFIELD {代码...} When called with just the key argument, return a random field from the hash value stored at key.随机返回指定数量的keyHSCANRedis HSCAN 命令用于迭代哈希表中的键值对。 {代码...} HSETNXHSTRLEN返回值得长度HVALS返...

Redis的底层类型之stream

2023-09-25
阅读 2 分钟
482
Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。

Redis的底层类型之geo

2023-09-25
阅读 2 分钟
522
geoGEOADD {代码...} key:指定要添加地理信息的有序集合的键名。longitude 和 latitude:表示地理位置的经度和纬度。通常使用双精度浮点数表示。member:与地理位置相关联的成员名称。GEODIST {代码...} key:指定要查询地理位置信息的有序集合的键名。member1 和 member2:表示两个地理位置成员的名称,用于计算它们之...

Redis的底层类型之bitmap&bitfields

2023-09-25
阅读 2 分钟
821
bitmapBitmap可以状态记录或统计,如每日登录SETBIT {代码...} GETBIT {代码...} BITFIELD {代码...} BITFIELD_ROBITFIELD_RO 命令是 BITFIELD 命令的只读变体,它仅接受 GET 子命令,并且可以安全地在只读副本中使用。这个命令的目的是在不破坏命令标志的情况下,在只读副本中允许 BITFIELD 的行为。BITCOUNT {代码...}...

Redis的底层类型之haperloglog

2023-09-25
阅读 2 分钟
464
HyperLogLog is a probabilistic data structure that estimates the cardinality of a set.The Redis HyperLogLog implementation uses up to 12 KB and provides a standard error of 0.81%.haperloglgo是一个概率性的数据结构,用于估计集合的基数,Redis HyperLogLog 实现最多使用12 KB,并提供0.81% 的标准错误。

Redis学习之rdb

2023-09-25
阅读 1 分钟
325
Redis会在后台异步进行快照操作,不阻塞redis,redis还可以相应客户端请求,该方式会fork一个子进程,由子进程进行复制持久化过程