![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【Redis】
文章平均质量分 59
_HelloBug
这个作者很懒,什么都没留下…
展开
-
Redis-压缩表-zipTryEncoding详解
/* 判断长度为entrylen的entry字符串能否转换为数值,转换结果保存在v中 编码方式保存在encoding中 */static int zipTryEncoding(unsigned char *entry, unsigned int entrylen, long long *v, unsigned char *encoding) { long long value; ...原创 2019-12-09 10:19:50 · 235 阅读 · 0 评论 -
Redis-压缩表-ziplistCompare详解
/* 将p指向的结点的值和长度为slen的sstr比较,相等:返回1,不等:返回0*/unsigned char ziplistCompare(unsigned char *p, unsigned char *sstr, unsigned int slen){ zlentry entry; unsigned char sencoding; long long z...原创 2019-12-05 08:59:35 · 155 阅读 · 0 评论 -
Redis-压缩表-ziplistDeleteRange详解
/* 从索引index开始,连续从压缩表zl中删除num个结点 */unsigned char *ziplistDeleteRange(unsigned char *zl, unsigned int index, unsigned int num) { /* 指针p保存压缩表中第index个结点的位置 */ unsigned char *p = ziplistIndex(zl,...原创 2019-12-04 13:05:19 · 136 阅读 · 0 评论 -
Redis-压缩表-__ziplistDelete详解
/* 从位置p开始,连续删除num个结点返回删除结点之后的压缩表 */static unsigned char *__ziplistDelete(unsigned char *zl, unsigned char *p, unsigned int num) { unsigned int i, totlen, deleted = 0; size_t offset; int...原创 2019-12-04 09:22:40 · 274 阅读 · 0 评论 -
Redis-压缩表-ziplistDelete详解
/* 删除压缩表zl中p指向的结点,返回删除结点之后的压缩表删除之后p指向p的下一个结点,这样方便对链表结点进行迭代删除 */unsigned char *ziplistDelete(unsigned char *zl, unsigned char **p) { size_t offset = *p - zl; /*函数__ziplistDelete功能:从压缩表zl中指针...原创 2019-11-24 19:19:10 · 280 阅读 · 0 评论 -
Redis-压缩表-ziplistGet详解
/* 取出p指向的结点的值如果结点保存的是字符串,sstr保存字符串指针,slen保存字符串长度;如果结点保存的是整数,*sval保存整数值结点的值获得成功返回1,获得失败返回0如果p为空,返回0如果p指向列表末端,返回,其他情况均为1 */unsigned char ziplistGet(unsigned char *p, unsigned char **sstr, unsign...原创 2019-11-24 18:59:20 · 270 阅读 · 0 评论 -
Redis-压缩表-ziplistPrev详解
/* 返回p指向的结点的前置结点如果p指向的压缩表是空表,返回NULL,如果p指向压缩表的表头结点,返回NULL */unsigned char *ziplistPrev(unsigned char *zl, unsigned char *p) { zlentry entry; /*p指向压缩表的表尾,则p的前置结点就是压缩表的最后一个结点 */ if (p[0]...原创 2019-11-22 17:10:31 · 150 阅读 · 0 评论 -
Redis-压缩表-ziplistNext详解
/* 返回p指向结点的后置结点如果p指向ZIP_END,返回NULL;如果p是表尾结点,返回NULLL */unsigned char *ziplistNext(unsigned char *zl, unsigned char *p) { if (p[0] == ZIP_END) { return NULL; } /* 函数zipRawEntryL...原创 2019-11-22 17:09:17 · 181 阅读 · 0 评论 -
Redis-压缩表-ziplistIndex详解
/* 返回压缩表zl的第index个结点,index为非负:从表头开始查找,0表示返回第一个结点index为负:从表尾开始查找,-1表示返回最后一个结点*/unsigned char *ziplistIndex(unsigned char *zl, int index) { unsigned char *p; /* 保存目标结点地址 */ zlentry entry; /...原创 2019-11-20 09:13:42 · 157 阅读 · 0 评论 -
Redis-压缩表-ziplistPush详解
/* 将长度为slen的字符串s,头插或者尾插入压缩表zl中,where指示是头插还是尾插 */unsigned char *ziplistPush(unsigned char *zl, unsigned char *s, unsigned int slen, int where) { unsigned char *p; /* p保存插入位置 */ /* 如果是头插,即whe...原创 2019-11-19 09:04:54 · 231 阅读 · 0 评论 -
Redis-压缩表-__ziplistInsert详解
/* 将长度为slen的字符串s插入到压缩表zl的位置p处 */static unsigned char *__zipListInsert(unsigned char *zl, unsigned char *p, unsigned char *s, unsigned int slen){ size_t curlen = intrev32ifbe(ZIPLIST_BYTES(zl...原创 2019-11-18 21:20:01 · 645 阅读 · 0 评论 -
redis数据迁移
一:实现功能通过shell脚本实现具体两个redis里的数据的拷贝 二:限制1. 两个redis里的相同名称的存储结构会被跳过如:如果两个redis里有相同的哈希表runoobkey,在执行脚本的时候会出现下面错误:(error) BUSYKEY Target key name already exists.2. 根据1的描述,不能实现类似将redis1的哈希表的key...原创 2018-10-24 13:16:51 · 1365 阅读 · 0 评论 -
Redis源码分析(二)_dict.c_1
/* Hash Tables Implementation. * * This file implements in memory hash tables with insert/del/replace/find/ * get-random-element operations. Hash tables will auto resize if needed * tables of powe...原创 2018-03-21 20:05:14 · 207 阅读 · 0 评论 -
Redis源码分析(一)_adlist.c
/* adlist.c - A generic doubly linked list implementation * * Copyright (c) 2006-2010, Salvatore Sanfilippo <antirez at gmail dot com> * All rights reserved. * * Redistribution and use in s...原创 2018-03-21 13:03:14 · 371 阅读 · 0 评论 -
Redis源码分析(前言)
Redis源码版本:3.0方式:从dict.c_2的分析开始,采用看懂代码,自己写代码的方式,在自己写的代码的基础上,对函数进行注释。源码分析次序参照:http://blog.csdn.net/column/details/redis-code.html?&page=2...原创 2018-03-21 12:28:06 · 141 阅读 · 0 评论 -
Redis源码分析(二)_dict.c_2
#include "fmacros.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdarg.h>#include <limits.h>#include <ctype.h>#include "dict.h原创 2018-03-30 17:55:34 · 220 阅读 · 0 评论 -
redis event_base_loop使用
intevent_base_dispatch(struct event_base *event_base){ return (event_base_loop(event_base, 0));}int event_base_loop(struct event_base *base, int flag);flag取值: EVLOOP_ONCE(0x01): 阻塞直到有一个活跃的event,然后执行完活...原创 2018-03-02 17:13:22 · 562 阅读 · 0 评论 -
redis批量删除Key
redis-cli keys "name*" |xargs redis-cli del原创 2018-02-28 08:49:36 · 306 阅读 · 0 评论