下载 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整合Redis的实战项目——"springboot-redisdemo",旨在帮助你深入理解和应用Redis。 首先,让我们详细探讨Redis的核心知识点: 1. **Redis的数据类型**:...
【Redis开发笔记——movement-mai】是一份关于Redis在处理移动数据或机器人轨迹跟踪方面的应用文档。Redis,全称为Remote Dictionary Server,是一个开源的、基于内存的数据结构存储系统,常被用作数据库、缓存和...
在Redis源码阅读笔记(10)——事件中,我们将探讨Redis如何利用事件模型来实现非阻塞I/O,以及相关的编程模型如Reactor模式和NIO。 Redis使用了一个基于epoll的事件处理器,epoll是Linux系统提供的一种高效I/O多路...
Redis是一款高性能的键值对数据库,其内部使用了许多优化的数据结构来存储数据,其中ziplist是Redis为了节省内存而设计的一种紧凑的列表和哈希数据结构。本文将深入探讨Redis源码中的ziplist,理解其设计原理和实现...
Redis,全称Remote Dictionary Server,是一款高性能的键值对存储系统,常被用作数据库、缓存和消息中间件。Redis以其速度快、数据结构丰富、支持网络、可持久化等特性,深受开发者喜爱。这份“redis缓存笔记”很...
### Redis基础配置笔记 #### 一、Redis简介 Redis 是一款开源且采用 BSD 许可证的高级键值存储系统。由于它支持多种数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)以及有序集合...
【Redis笔记1】 Redis是一种内存数据结构存储系统,常被用作数据库、缓存和消息中间件。在本文中,我们将探讨Redis与NoSQL数据库的相关知识点。 **一、单机MySQL的瓶颈** 随着数据量的增长,单机MySQL面临几个...
Redis 是一款高性能的键值存储系统,常用于缓存、分布式锁、消息队列等场景。Salvatore Sanfilippo,即 Redis 之父,宣布退出 Redis 的维护工作,但 Redis 的广泛应用并未因此受到影响,反而成为了面试中的必备知识...
SSM实战项目——Java高并发秒杀API是一个深入学习Java后端开发的重要实践,它涵盖了Spring、SpringMVC和MyBatis三大框架的整合应用,以及如何处理高并发下的秒杀场景。在这个项目中,我们将深入理解如何设计并实现一...
这个Java实战项目提供了详细的步骤和学习笔记,涵盖了从需求分析、架构设计到代码实现的全过程,是提升Java并发编程和分布式系统设计能力的宝贵资源。通过实际操作,你可以深入了解SSM框架的使用以及在高并发场景下...
【数据库项目——massunaAi笔记】 在信息技术领域,数据库是一个至关重要的组成部分,它负责存储、管理并检索数据。本项目“database_project-massunaAi”显然聚焦于利用数据库技术进行数据管理和分析。以下是对这...
本项目——“达内云笔记”,是一个基于SSM(Spring、SpringMVC、MyBatis)框架构建的云笔记应用,旨在帮助开发者理解和掌握企业级Web应用的开发流程和技术栈。该项目不仅提供了完整的源代码,还附带了详尽的注释,为...
本篇笔记将深入探讨MyBatis的缓存机制,包括一级缓存和二级缓存的概念、工作原理、配置与使用。 一级缓存是SqlSession级别的缓存,每当执行一个SQL查询时,如果结果不在缓存中,MyBatis会将其放入一级缓存。当同一...
Redis (Remote Dictionary Server) 是一款开源的高性能键值对数据库。它以其卓越的性能和灵活性,在多种应用场景中发挥着重要作用,比如缓存、消息队列等。Redis 的主要特性包括: - **高性能**:即使是运行在普通...
《个人知识管理系统的设计与实现——基于Java、Idea、Vue、Redis及Mybatis的技术实践》 个人知识管理系统是现代信息社会中,为了帮助用户高效管理、组织和分享知识而开发的一种软件工具。在这个系统中,用户可以...
概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。 特征: 1、数据间没有必然的关联关系 2、内部采用单线程机制进行工作 3、高性能。 4、多数据类型支持: ...
这部分内容涵盖了多种攻击技术的利用方法,例如使用不同的协议(如gopher、dict)执行命令、写入shell、利用数据库漏洞(如MongoDB、PostgresSQL、MSSQL等)、利用图片处理函数攻击、SSRF(服务器端请求伪造)和SQL...
Hash在数据库、缓存、字符串查找等方面发挥着重要作用,比如Redis中的键值存储就大量依赖Hash算法。 《MIT公开课——算法导论》的讲义部分可能详细解释了这些概念,并通过实例演示了如何实现和分析算法的效率。答案...
总的来说,这个压缩包提供了一个综合的学习资源,涵盖了Shell脚本的基础知识以及两个数据库系统(MySQL和Redis)的慢查询优化策略。对于想要深入理解Shell脚本或提高数据库性能的IT从业者来说,这是一个非常有价值的...
### 偌依框架的使用学习笔记 #### 一、若依框架的介绍与说明 若依框架是一款基于Spring Boot、Spring Security、JWT、Vue和Element的全开源快速开发平台,旨在提供高效的前后端分离解决方案。它具备以下特点: 1....