
redis
文章平均质量分 86
后打开撒打发了
有些人注定要生活在彼岸 可以亲近可以爱怜 甚至可以穷尽一生去思念 只是无法触及 有些距离 注定不能跨越 只能俩俩相望 就像有些爱只能养在心里 长在眼中 不要捧在手里 放在身边 注定只能邂逅 无法遭遇
展开
-
redis分布式锁--实际应用代码参考
分布式锁原理文章后面会给出实际应用代码参考:分布式锁原理分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。使用setnx、getset、expire、del这4个redis命令实现...原创 2020-01-10 17:31:57 · 539 阅读 · 0 评论 -
zmalloc.c redis内存管理篇源码分析
PREFIX_SIZE说明在zmalloc函数中,实际可能会每次多申请一个 PREFIX_SIZE的空间。从如下的代码中看出,如果定义了宏HAVE_MALLOC_SIZE,那么 PREFIX_SIZE的长度为0。其他的情况下,都会多分配至少8字节的长度的内存空间#ifdef HAVE_MALLOC_SIZE#define PREFIX_SIZE (0)#else#if defined(_...原创 2020-01-05 21:02:09 · 532 阅读 · 0 评论 -
ziplist--redis源码研究笔记-压缩列表ziplist
ziplsit的特点简单介绍:ziplist其实就是分配一块连续的内存,用指针和位操作来操作内存的一种高效的数据结构。Ziplist 能存储strings和integer值,整型值被存储为实际的整型值而不是字符数组Ziplist 是为了尽可能节约内存而设计相当特殊的双端队列Ziplist 在头部和尾部的操作时间0(1),ziplist的操作都需要重新分配内存,所以实际的复杂度和zipli...原创 2019-12-30 11:05:12 · 462 阅读 · 0 评论 -
redis源码分析(9)redis源码链表学习总结 adlist.h adlist.c
adlist的实现就比较常规了,比较ziplist简单多了。每个链表节点使用一个 adlist.h/listNode 结构来表示:typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 vo原创 2017-12-20 16:21:18 · 534 阅读 · 0 评论 -
redis源码分析(二)、sds动态字符串学习总结
sds字符串Redis 只会使用 C 字符串作为字面量, 在大多数情况下, Redis 使用 SDS (Simple Dynamic String,简单动态字符串)作为字符串表示。 比起 C 字符串, SDS 具有以下优点:常数复杂度获取字符串长度。杜绝缓冲区溢出。减少修改字符串长度时所需的内存重分配次数。二进制安全。兼容部分 C 字符串函数。根据传统, C 语言使用长度为原创 2017-12-20 16:33:04 · 457 阅读 · 0 评论 -
redis源码分析(一)复习redis命令、持久化方案、主从同步原来、配置
源码分析之前复习一下redis知识,好久没用过redis有点生疏了。一、redis的数据结构 redis可以存储键与5种不同数据结构类型之间的映射,这5种数据类型就是string(字符串)、list(列表)、set(集合)、hash(散列)、zset(有序集合)。redis命令对于这5种结构都是通用的,如del、type、range等。1、string操作:string是re原创 2017-12-20 16:25:13 · 494 阅读 · 0 评论 -
redis源码分析(三)redis命令学习总结—string字符串
一、描述字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M二、redis字符串命令介绍1.set 命令:Redis SET 命令用于设置给定 key 的值。如果 key 已经存储其他值,原创 2017-12-20 16:15:56 · 489 阅读 · 0 评论 -
redis源码分析(四)、redis命令学习总结—链表List
一、链表List链表被广泛用于实现 Redis 的各种功能, 比如列表键, 发布与订阅, 慢查询, 监视器, 等等。每个链表节点由一个 listNode 结构来表示, 每个节点都有一个指向前置节点和后置节点的指针, 所以 Redis 的链表实现是双端链表。每个链表使用一个 list 结构来表示, 这个结构带有表头节点指针、表尾节点指针、以及链表长度等信息。因为链表表头节点的前置节点和表尾节原创 2017-12-20 16:17:37 · 463 阅读 · 0 评论 -
redis源码分析(八)、redis数据结构之压缩ziplist--------ziplist.c ziplist.h学习笔记
一、介绍ziplist/* The ziplist is a specially encoded dually linked list that is designed * to be very memory efficient. * Ziplist 是为了尽可能节约内存而设计相当特许的双端队列 *It stores both strings and integer values,原创 2017-12-20 16:20:29 · 896 阅读 · 0 评论 -
redis源码分析(七)、redis命令学习总结—Redis 有序集合(sorted set)
一、介绍Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295,原创 2017-12-20 16:19:43 · 495 阅读 · 0 评论 -
redis源码分析(六)、redis命令学习总结—Redis 集合(Set)
一、介绍:Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。二、命令学习。1、 SaddRedis Sadd 命令将一个或原创 2017-12-20 16:19:02 · 1056 阅读 · 0 评论 -
redis源码分析(五)、redis命令学习总结—哈希Hash
一、介绍hasp:大多数编程语言中的map数据结构一样,Redis是键值对的集合,也就是说它存放的是字符串和字符串之间的映射。由于这个特性,hash特别适用于存储一个对象。将一个对象存储在hash中会占用更少的内存,并且可以方便地存取整个对象。二、命令学习1、HsetRedis Hset 命令用于为哈希表中的字段赋值 。如果哈希表不存在,一个新的哈希表被创建原创 2017-12-20 16:18:25 · 525 阅读 · 0 评论