`

数据库学习——关于redis的一点笔记

 
阅读更多

 下载 redis2.4.* 版本源码

 

A,注册一个命令

 

struct redisCommand {
    char *name;					//命令名称
    redisCommandProc *proc;		//命令调用函数
    int arity;					//命令参数个数
    int flags;					//如果标记为REDIS_CMD_DENYOOM,NULL,内存满后此命令不可执行,主要针对写数据库的命令
    /* Use a function to determine which keys need to be loaded
     * in the background prior to executing this command. Takes precedence
     * over vm_firstkey and others, ignored when NULL */
    redisVmPreloadProc *vm_preload_proc;
    /* What keys should be loaded in background when calling this command? */
    int vm_firstkey; /* The first argument that's a key (0 = no keys) */
    int vm_lastkey;  /* THe last argument that's a key */
    int vm_keystep;  /* The step between first and last key */
};

 

主要需要设置前面四个参数即可,后面的几个属性是关于开启vm的时候redis预读选项的配置,redis2.6以后由于废弃了vm特性,我也没看到这些参数有什么用。

 

redisCommandProc函数有一个参数redisClient *c

可以通过c->argv获取命令的参数列表

然后经过后台处理后,调用addReply函数给客户端响应消息

 

 

B,配置keepalive特性

 

tcp开启keepalive特性,redis封装了anetTcpKeepAlive函数,不过没有启用,不知道为什么

 

在network.c的createClient函数里面添加如下代码,设置keepalive的几个参数值

 

 

    anetNonBlock(NULL,fd);
    anetTcpNoDelay(NULL,fd);
    if(server.keepalive){
        anetTcpKeepAlive(NULL,fd);
        setsockopt(fd, SOL_TCP, TCP_KEEPIDLE, (void*)&server.keepidle , sizeof(server.keepidle ));
        setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, (void *)&server.keepinterval , sizeof(server.keepinterval ));
        setsockopt(fd, SOL_TCP, TCP_KEEPCNT, (void *)&server.keepcount , sizeof(server.keepcount ));
    }

 

Redis 2.6.*里面是默认开启tcp keepalive的。

分享到:
评论

相关推荐

    redis学习笔记+练习springboot-redisdemo

    本资源包包含了关于Redis的学习笔记以及一个基于SpringBoot整合Redis的实战项目——"springboot-redisdemo",旨在帮助你深入理解和应用Redis。 首先,让我们详细探讨Redis的核心知识点: 1. **Redis的数据类型**:...

    Redis开发笔记-movement-mai

    【Redis开发笔记——movement-mai】是一份关于Redis在处理移动数据或机器人轨迹跟踪方面的应用文档。Redis,全称为Remote Dictionary Server,是一个开源的、基于内存的数据结构存储系统,常被用作数据库、缓存和...

    redis源码阅读笔记(10)——事件

    在Redis源码阅读笔记(10)——事件中,我们将探讨Redis如何利用事件模型来实现非阻塞I/O,以及相关的编程模型如Reactor模式和NIO。 Redis使用了一个基于epoll的事件处理器,epoll是Linux系统提供的一种高效I/O多路...

    redis源码阅读笔记(6)——ziplist

    Redis是一款高性能的键值对数据库,其内部使用了许多优化的数据结构来存储数据,其中ziplist是Redis为了节省内存而设计的一种紧凑的列表和哈希数据结构。本文将深入探讨Redis源码中的ziplist,理解其设计原理和实现...

    redis缓存笔记

    Redis,全称Remote Dictionary Server,是一款高性能的键值对存储系统,常被用作数据库、缓存和消息中间件。Redis以其速度快、数据结构丰富、支持网络、可持久化等特性,深受开发者喜爱。这份“redis缓存笔记”很...

    Redis基础配置笔记

    ### Redis基础配置笔记 #### 一、Redis简介 Redis 是一款开源且采用 BSD 许可证的高级键值存储系统。由于它支持多种数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)以及有序集合...

    Redis 笔记1

    【Redis笔记1】 Redis是一种内存数据结构存储系统,常被用作数据库、缓存和消息中间件。在本文中,我们将探讨Redis与NoSQL数据库的相关知识点。 **一、单机MySQL的瓶颈** 随着数据量的增长,单机MySQL面临几个...

    Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计(csdn)————程序.pdf

    Redis 是一款高性能的键值存储系统,常用于缓存、分布式锁、消息队列等场景。Salvatore Sanfilippo,即 Redis 之父,宣布退出 Redis 的维护工作,但 Redis 的广泛应用并未因此受到影响,反而成为了面试中的必备知识...

    SSM实战项目——Java高并发秒杀API,详细流程+学习笔记

    SSM实战项目——Java高并发秒杀API是一个深入学习Java后端开发的重要实践,它涵盖了Spring、SpringMVC和MyBatis三大框架的整合应用,以及如何处理高并发下的秒杀场景。在这个项目中,我们将深入理解如何设计并实现一...

    SSM实战项目——Java高并发秒杀API,详细流程+学习笔记.zip

    这个Java实战项目提供了详细的步骤和学习笔记,涵盖了从需求分析、架构设计到代码实现的全过程,是提升Java并发编程和分布式系统设计能力的宝贵资源。通过实际操作,你可以深入了解SSM框架的使用以及在高并发场景下...

    database-project-massunaAi笔记

    【数据库项目——massunaAi笔记】 在信息技术领域,数据库是一个至关重要的组成部分,它负责存储、管理并检索数据。本项目“database_project-massunaAi”显然聚焦于利用数据库技术进行数据管理和分析。以下是对这...

    达内云笔记项目完整代码+注释

    本项目——“达内云笔记”,是一个基于SSM(Spring、SpringMVC、MyBatis)框架构建的云笔记应用,旨在帮助开发者理解和掌握企业级Web应用的开发流程和技术栈。该项目不仅提供了完整的源代码,还附带了详尽的注释,为...

    【MyBatis学习笔记八】——MyBatis缓存.zip

    本篇笔记将深入探讨MyBatis的缓存机制,包括一级缓存和二级缓存的概念、工作原理、配置与使用。 一级缓存是SqlSession级别的缓存,每当执行一个SQL查询时,如果结果不在缓存中,MyBatis会将其放入一级缓存。当同一...

    redis3分布式集群部署

    Redis (Remote Dictionary Server) 是一款开源的高性能键值对数据库。它以其卓越的性能和灵活性,在多种应用场景中发挥着重要作用,比如缓存、消息队列等。Redis 的主要特性包括: - **高性能**:即使是运行在普通...

    个人知识管理系统的设计与实现(源码+数据库)052332

    《个人知识管理系统的设计与实现——基于Java、Idea、Vue、Redis及Mybatis的技术实践》 个人知识管理系统是现代信息社会中,为了帮助用户高效管理、组织和分享知识而开发的一种软件工具。在这个系统中,用户可以...

    Redis入门到精通笔记和源码

    概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。 特征: 1、数据间没有必然的关联关系 2、内部采用单线程机制进行工作 3、高性能。 4、多数据类型支持: ...

    渗透测试笔记——收集于网络

    这部分内容涵盖了多种攻击技术的利用方法,例如使用不同的协议(如gopher、dict)执行命令、写入shell、利用数据库漏洞(如MongoDB、PostgresSQL、MSSQL等)、利用图片处理函数攻击、SSRF(服务器端请求伪造)和SQL...

    MIT公开课——算法导论教材

    Hash在数据库、缓存、字符串查找等方面发挥着重要作用,比如Redis中的键值存储就大量依赖Hash算法。 《MIT公开课——算法导论》的讲义部分可能详细解释了这些概念,并通过实例演示了如何实现和分析算法的效率。答案...

    知识点汇总.rar

    总的来说,这个压缩包提供了一个综合的学习资源,涵盖了Shell脚本的基础知识以及两个数据库系统(MySQL和Redis)的慢查询优化策略。对于想要深入理解Shell脚本或提高数据库性能的IT从业者来说,这是一个非常有价值的...

    偌依框架的使用学习笔记

    ### 偌依框架的使用学习笔记 #### 一、若依框架的介绍与说明 若依框架是一款基于Spring Boot、Spring Security、JWT、Vue和Element的全开源快速开发平台,旨在提供高效的前后端分离解决方案。它具备以下特点: 1....

Global site tag (gtag.js) - Google Analytics