
redis
文章平均质量分 60
编程小问号
这个作者很懒,什么都没留下…
展开
-
分析Redis架构设计
一、前言因为近期项目中开始使用Redis,为了更好的理解Redis并应用在适合的业务场景,需要对Redis设计与实现深入的理解。我分析流程是按照从main进入,逐步深入分析Redis的启动流程。同时根据Redis初始化的流程,理解Redis各个模块的功能及原理。二、redis启动流程1.初始化server变量,设置redis相关的默认转载 2014-10-16 22:59:40 · 438 阅读 · 0 评论 -
Twemproxy源码分析(二)进程&事件模型
概述:上一节我们了解了Twemproxy主程序的启动过程,但没有深入细节。作为一个proxy服务,我们应该深入了解它的进程和事件模型。本章我们从nc_run()开始深入了解。进程模型:在看代码之前,我们得先大体了解Twemproxy使用的是单进程、多进程还是多线程的模型。通过grep代码,查找fork()和pthread_create()函数的调用,发现Twemproxy使转载 2015-08-05 10:00:24 · 1138 阅读 · 0 评论 -
Twemproxy源码分析(四)数据结构(array和string)
概述:本节我们介绍Twemproxy的两个重要的自定义数据结构:array和string。array:故名思议,array就是数组,array的代码在nc_array.c和nc_array.h中,我们先来看看array的结构:数据结构:123456struct array { uint32_t nelem; /* # element */转载 2015-08-05 10:03:03 · 698 阅读 · 0 评论 -
Twemproxy源码分析(三)数据结构(队列)
概述前面我们分析了Twemproxy的启动过程,进程和时间驱动模型,再往下细看逻辑的话,就必须先了解一下Twemproxy的重要数据结构和它们之间的关系了,本节我们先看一下队列,因为很多主要数据结构都用到了它。有关队列的代码主要在nc_queue.h中,从代码注释中可以看到,这个文件只不过是从FreeBSD中拿过来的,队列的定义和操作凑是通过宏来实现的。通过注释,我们可以了解到nc转载 2015-08-05 10:02:11 · 1005 阅读 · 0 评论 -
从hiredis使用出core谈谈redis多线程的使用
原文地址:http://my.oschina.net/jungleliu0923/blog/202948摘要 hireedis多线程出core原因目录[-]1、情景描述1.1 使用场景1.2 初步实现方案1.3 结果2、线下复现2.1 代码2.2 编译执行2.3 原因分析3. 终极解决方案转载 2015-07-25 11:35:08 · 747 阅读 · 0 评论 -
linux下使用redis代理twmproxy
twemproxy,又名nutracker,是一个快速,轻量级的代理程序,支持memcache 和redis协议。它主要用来降低后端缓存服务器的连接数。目前的最新版本为0.3.0.git地址:https://github.com/yuyunliuhen/twemproxy。编译:$get clone https://github.com/yuyunliuhen/twemprox转载 2015-08-18 09:45:45 · 888 阅读 · 0 评论 -
Twemproxy源码分析(五)配置文件
概述:Twemproxy使用yaml作为配置文件的格式,本节我们看一下Twemproxy如何读取配置文件的,如果要扩展Twemproxy的功能,修改配置是必不可少的。配置加载:前面我们提到,instance结构中,有个conf_filename字段,这个字段存放的就是配置文件名,于是我们通过这个字段查找一下Twemproxy是在什么地方加载的配置文件:12345转载 2015-08-05 10:04:17 · 1465 阅读 · 0 评论 -
Redis配置文件详解
2013-04-12Posted by yehosed ‘s@^[# ].*$@@g’ /usr/local/redis/etc/redis.conf | awk ‘{if (length !=0) print $0}’1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程daemonize yes2. 当Redis以转载 2015-08-18 10:22:11 · 488 阅读 · 0 评论 -
redis.conf配置详解
redis.conf配置选项如下daemonize 是否以后台进程运行,默认为nopidfile 如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pidbind 绑定主机IP,默认值为127.0.0.1(注释)port 监听端口,默认为6379timeout 超时时间,默认为300(秒)loglevel 日志记录等级,有4个可选值,debug,ve转载 2015-08-18 10:14:33 · 456 阅读 · 0 评论 -
用redis实现微博关注关系
2015-07-23 / jockchou由于产品需求的需要,我们做的产品里要实现类似微博里的关注关系。在过去的一篇博客《用MySQL实现微博关注关系的方案分析》分析了MySQL实现方式以及优缺点,这篇博客介绍Redis的实现思路。关注关系产生的四种关系状态关注粉丝双向关注(互粉)无关系 需求分析在微博中,每一个用户都会有一个关注列表,转载 2015-08-19 16:15:27 · 2921 阅读 · 0 评论 -
Twemproxy源码分析(一)启动过程
概述:Twemproxy是Twitter开发并开源的适用于Redis和Memcached的轻量级的缓存中间件,可以代理对Redis和Memcached的访问。因为项目需要,我们打算在此基础上进行二次开发,加入一些自己需要的功能(例如cluster之间的数据同步),所以需要深入了解一下Twemproxy源码,我将我阅读Twemproxy源码过程的笔记记录在此。代码概况:clo转载 2015-08-05 09:59:01 · 1207 阅读 · 0 评论 -
twemproxy源码分析之五:zero copy
先给出msg的数据结构: truct msg { TAILQ_ENTRY(msg) c_tqe; TAILQ_ENTRY(msg) s_tqe; TAILQ_ENTRY(msg) m_tqe; uint64_t转载 2015-07-20 09:59:41 · 977 阅读 · 0 评论 -
twemproxy源码分析之四:处理流程ji(内容属于转载。这是我看到的一篇十分详尽的分析http://idning.git
nc_connection.c很赞的注释:* nc_connection.[ch]* Connection (struct conn)* + + +* | |转载 2015-07-20 09:58:11 · 705 阅读 · 0 评论 -
一致性 hash 算法( consistent hashing )
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的转载 2015-06-23 18:08:19 · 391 阅读 · 0 评论 -
坑爹的hiredis API使用
hiredis是redis的官方C API,但是不得不说API的使用很坑爹。hiredis提供了一个名为redisCommand的API用于向redis server发送命令,redisCommand的函数原型如下:void *redisCommand(redisContext *c, const char *format, ...)貌似很牛逼的样子,提供了类似转载 2015-07-13 10:47:02 · 1191 阅读 · 0 评论 -
记一hiredis redisCommand坑
实际上应该说是redisvFormatCommand的坑,代码如下:[cpp] view plaincopyprint?case 'b': "white-space:pre"> arg = va_arg(ap,char*); size = va_arg(ap,size_t); if (s转载 2015-07-13 11:01:30 · 2580 阅读 · 0 评论 -
Redis C语言客户端库hiredis文档翻译
Hiredis是redis数据库一个轻量的C语言客户端库。之所以轻量是由于它只是简单的提供了对redis操作语句支持的接口,并没有实现具体的操作语句的功能。但正是由于这种设计使我们只要熟悉了通用的redis操作语句就可以很容易的使用该库和redis数据库进行交互。除了支持发送命令和接收应答/应答数据,它提供了对应答数据的解析操作。而且这个基于I/O层的数据流解析操作设计考虑到了复用转载 2015-07-13 11:02:37 · 669 阅读 · 0 评论 -
redis 五种数据类型的使用场景
String[html] view plaincopy1、String 常用命令: 除了get、set、incr、decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一段内容 设置及获取字符串的某一位(bit) 批量设置一系列字符串的转载 2015-07-13 17:24:33 · 365 阅读 · 0 评论 -
转:Tumblr:150亿月浏览量背后的架构挑战
转:Tumblr:150亿月浏览量背后的架构挑战by 唐福林 posted on 2012 年 02 月 17 日导读:和许多新兴的网站一样,著名的轻博客服务Tumblr在急速发展中面临了系统架构的瓶颈。每天5亿次浏览量,峰值每秒4万次请求,每天3TB新的数据存储,超过1000台服务器,这样的情况下如何保证老系统平稳运行,平稳过渡到新的系统,Tumblr正面临巨大的挑战。近日,转载 2015-08-11 14:56:48 · 828 阅读 · 0 评论 -
Twemproxy源码分析之三:其进程以及时间模型
概述:本来自己写了一篇,但是看到http://www.tuicool.com/articles/NfqeEf这篇更好,于是就算转载过来了吧。下一篇我们会讲到twemproxy的核心,即其转发响应转发请求。作为一个proxy服务,我们应该深入了解它的进程和事件模型。进程模型:通过grep代码,查找fork()和pthread_create()函数的调用,并分析调用者两个函数的转载 2015-07-20 09:56:59 · 626 阅读 · 0 评论 -
Twemproxy源码分析之一 入口函数及启动过程
最近开始研究twemproxy先将其中的知识点归纳整理一下。作为一个系列的知识点。一、Twemproxy简介Twemproxy是memcache与redis的代理,由twitter公司开发并且目前已经开源。研究这个对于理解网络通信有很大的帮助。 亮点有以下:1.twemproxy自己创建并维护和后端server(即reids实例)的长连接,保证长连接对于来自不同clien转载 2015-07-20 09:54:37 · 541 阅读 · 0 评论 -
twemproxy源码分析之二 nc_run
nc_run函数一共没几行。主要的函数有core_start, core_loop以及core_stop.:twemproxy源码分析之二 nc_run" title="原创 :twemproxy源码分析之二 nc_run" style="margin:0px; padding:0px; border:0px; list-style:none">:twemproxy源码转载 2015-07-20 09:56:02 · 604 阅读 · 0 评论 -
Redis、Memcached、Guava、Ehcache中的算法
缓存那些事,一是内存爆了要用LRU(最近最少使用)、LFU(最少访问次数)、FIFO的算法清理一些;二是设置了超时时间的键过期便要删除,用主动或惰性的方法。在看所有的细节之前,可以看一篇相当专业的《缓存算法》,世界真宽阔,算法真奇妙。 1. LRU简单粗暴的Redis今天看Redis3.0的发行通告里说,LRU算法大幅提升了,就翻开源码来八卦一下,结果哭笑不转载 2016-12-05 14:14:07 · 402 阅读 · 0 评论