Redis安装与源码调试

2023-11-10

linux版本:64位CentOS 6.5

Redis版本:redis-3.0.6  (更新到2016年1月22日)

Redis官网:http://redis.io/

Redis常用命令:http://redis.io/commands

1.安装Redis

# wget http://download.redis.io/releases/redis-3.2.6.tar.gz

tar xzf redis-3.2.6.tar.gz

cd redis-3.2.6

make && make install


如果报错

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-2.6.2/src'
make: *** [all] Error 2

解决办法是:

make MALLOC=libc


注意:Redis并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西。

redis-2.4以上自带jemalloc,你不需要加任何参数,通过zmalloc.c源码中我们可以看到,Redis在编译时,会先判断是否使用tcmalloc,如果是,会用tcmalloc对应的函数替换掉标准的libc中的函数实现。其次会判断jemalloc是否使得,最后如果都没有使用才会用标准的libc中的内存管理函数。所以用tcmalloc优化请谨慎使用,这两着分配器碎片率相差不大,建议用自带jemalloc。


如果要安装tcmalloc可以这样:

# make USE_TCMALLOC=yes

参考:利用TCMalloc替换Nginx和Redis默认glibc库的malloc内存分配


为了调试需要修改CFLAGS参数

# make CFLAGS="-g -O0" 

make命令执行完成后,会在src目录下生成5个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump,它们的作用如下:
redis-server:Redis服务器的daemon启动程序
redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
redis-check-aof:更新日志检查 

redis-check-dump:用于本地数据库检查 

为什么没用标准的Linux安装三板斧呢?官方维基是这样说的:Redis can run just fine without a configuration file (when executed without a config file a standard configuration is used). With thedefault configuration Redis will log to the standard output so you can check what happens. Later, you canchange the default settings.

也可以make install,这样就是把可运行文件复制到/usr/local/bin里而已。

make之后,会出现一句提示:

Hint: To run 'make test' is a good idea ;)


-----------------------------------------------------------------

其实不测试,一般都可以用。但是既然人家建议了,咱们就走一下make test吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis安装与源码调试 的相关文章

  • 是否可以使用带有 FUSE 文件系统的 Linux VFS 缓存?

    默认情况下 Linux VFS 缓存似乎不适用于 FUSE 文件系统 例如 read 调用似乎被系统地转发到 FUSE 文件系统 我在 FUSE 特定的远程文件系统上工作 我需要一个非常积极的缓存 我需要实现自己的页面缓存吗 或者是否可以为
  • Redis多插入问题

    我尝试多次插入 但它给了我错误 http pastie org 7337421 http pastie org 7337421 cat mass insert txt 3 r n 3 r nSET r n 3 r nkey r n 5 r
  • 找不到模块“socket.io/node_modules/redis”

    当尝试做的时候 var redis require socket io node modules redis 我收到错误 找不到模块 socket io node modules redis 我不明白为什么 我正在运行 Windows 并运
  • Redis 块推送直到列表有空位

    我正在寻找类似的东西BLPUSH该命令将阻塞 直到列表的长度低于指定值max size 目的是防止生产者运行速度快于消费者时列表无限增长 功能与 python 非常相似Queue put https docs python org 3 li
  • 我的 Redis 自动生成的密钥

    我不知道我的 Redis 版本 4 0 9 到底发生了什么 我正在运行一个应用程序并使用 Redis 来存储我的数据库 但是 然后 Redis 自动创建 3 个新键 Backup1 Backup2 Backup3 并删除我的所有数据 这是我
  • PooledRedisClientManager 未释放连接

    我将 json 数据列表存储在 redis 中并使用 ServiceStack c 客户端访问它 我本质上是在管理自己的外键 我在其中存储zrangeid 我使用应用程序内部的接口从zrange然后从 Redis 获取底层 json 对象并
  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • Redis键空间事件不触发

    我有两个 Redis 客户端 在一个文件中我有一个简单的脚本设置并删除了 Redis 键 var redis require redis var client redis createClient 6379 127 0 0 1 client
  • 如果另一个键中的计数器低于零,则从集合中原子删除一个项目?

    雷迪斯2 0 3 在我的 Redis DB 中 我有一组项目 每个项目都有一个与其关联的计数器 MULTI SADD items set foo INCRBY items foo 10000 EXEC 新项目会以随机间隔添加到集合中 当用户
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • 在 Kubernetes/Openshift 中将客户端-服务器流量保持在同一区域的最佳方法?

    我们运行兼容 Kubernetes OKD 3 11 的本地 私有云集群 其中后端应用程序与用作缓存和 K V 存储的低延迟 Redis 数据库进行通信 新的架构设计将在两个地理上分布的数据中心 区域 之间平均划分工作节点 我们可以假设节点
  • Redis SYNC 套接字上的错误情况:连接被拒绝

    在我的 django 应用程序中使用 celery 和 redis 一切都工作正常 直到我遇到了问题 redis 文件的位置已更改 redis 无法访问它们 经过查找 原来这是由于网络随机攻击造成的 需要添加confg 我添加文件后 一段时
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • 如何在Redis中从hmset()切换到hset()?

    我收到弃用警告 即 Redis hmset 已弃用 请改用 Redis hset 但是 hset 采用第三个参数 我不知道是什么name应该是 info users 10 timestamp datetime utcnow strftime
  • 使用 Sentinels 升级 Redis 的最佳实践?

    我有 3 个 Redis 节点 由 3 个哨兵监视 我进行了搜索 文档似乎不清楚如何最好地升级此类配置 我目前使用的是 3 0 6 版本 我想升级到最新的 5 0 5 我对这方面的程序有几个疑问 升级两个大版本可以吗 我在我们的暂存环境中执
  • redis 2.8.7 Linux Sentinel环境配置问题,如何使其自启动,应该订阅什么?

    现在我们尝试使用 redis 2 8 7 作为缓存存储 来自使用 booksleeve 客户端的 NET Web 应用程序 目前看来这是一个非常有趣和令人兴奋的任务 redis 文档非常好 但由于缺乏真正的实践经验 我确实有几个关于如何正确
  • 想要在后台不间断地运行redis-server

    我已经下载了 redis 2 6 16 tar gz 文件并安装成功 安装后我运行 src redis server 它工作正常 但我不想每次都手动运行 src redis server 而是希望 redis server 作为后台进程持续
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker

随机推荐

  • SpringBoot实现导入功能

    实体类 gt MeetRestaurantArrange package com krt meet entity import com baomidou mybatisplus annotation TableName import com
  • 小米手机如何安装fiddler证书

    在手机浏览器输入ip port 1 找到设置 2 更多设置 3 系统安全 4 从存储设备安装 以上问题可以解决在fiddler抓包https的问题
  • python 类的__str__方法

    转载自文章 str 方法 当使用print输出对象的时候 只要类中自己定义了 str self 方法 那么就会打印从在这个方法中return的数据 例如 class Cat 定义一个猫类 def init self new name new
  • OpenCV移植到ARM全过程-III

    gt 目录 在上一篇文章里面我们已经交叉编译好了opencv的第三方依赖库 并且解压好了opencv源码 现在开始正式的交叉编译opencv源码 进入opencv源码目录下 上一篇在源码的的根目录下建立了2个文件夹build和output
  • 基于Spring-Data-Elasticsearch 优雅的实现 多字段搜索 + 高亮 + 分页 + 数据同步✨

    持续创作 加速成长 这是我参与 掘金日新计划 10 月更文挑战 的第17天 点击查看活动详情 系列说明 本系列文章基于我的开源微服务项目 校园博客 进行分析和讲解 所有源码均可在GitHub仓库上找到 系列文章地址请见我的 校园博客专栏 G
  • LinearEyeDepth 定义

    UnityCG cginc中原函数如下 Z buffer to linear 0 1 depth 0 at eye 1 at far plane inline float Linear01Depth float z return 1 0 Z
  • 重学STM32---(六)DAC+DMA+TIM

    这两天复习了DAC DMA再加上把基本定时器TIM6和TIM7看了一下 打算写一个综合点的程序 就在网上找了一些关于DAC DMA和定时器相关的程序 最终打算写了输出正弦波的程序 由于没有示波器 也就不能显示出效果了 本来是打算用软件调试看
  • linux获取ipv6公网ip,Linux 获取IPv6网关

    基于hisi3536实现的 ubuntu下只要找到对应的配置文件 ipv6 route 即可 include include include include include include include include include i
  • #ifdef #if defined #ifndef和#if !defined区别 详解-覆盖所有说明

    首先 让我们先从头文件开始 在很多头文件里 我们会看到这样的语句 ifndef MYHEADFILE H define MYHEADFILE H 语句 endif MYHEADFILE H 为了避免同一个文件被include多次 我们常使用
  • 浅谈构建iOS一个动态化页面的思路

    随着产品的不断迭代 功能的不断完善 我们的项目的中会给用户分成区域呈现出越来越多的东西 咕咚的精选给用户一种信息广场的概念 让用户可以快速的抵达我们感兴趣的点 既然如此 那么每一个项目的综合信息的页面经常会被改动 出现位置的调整 出现新的模
  • STM32中断与事件的理解

    推荐文档 事件与中断区别 目录 事件与中断区别 举例 膝跳反射 人们看见火灾之后打119 事件与中断区别 很多时候 我们经常使用到中断 但是STM32还有一个东西叫做事件 那么这个事件是什么呢 看了上面这个文档我们知道 1 中断是需要CPU
  • MyBatis的Mapper接口以及Example的实例函数及详解

    一 mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample UserExample example thorws SQLException 按条件计数 int deleteByPr
  • c#中函数参数中的this(扩展方法)

    首先和大家说一下 最近参加实习了 所以更新可能比较少 而且对于大家提出的问题可能不能及时回复 希望大家理解 在我看完大佬的项目之后 感觉自己啥也不会 于是不出意外 之后再csdn上我就会更新我在项目中遇到的问题 希望对大家也有些帮助 c 函
  • Web前端vueDemo—实现简单计数器功能(一)

    系列文章目录 Web前端vueDemo 实现简单计数器功能 一 Web前端vueDemo 实现图片切换功能 二 Web前端vueDemo 实现记事本功能 三 Web前端vueDemo 实现天气预报功能 四 文章目录 系列文章目录 前言 一
  • mysql数据库登录失败次数_mysql数据库限制多次登录失败,限定用户重试时间

    前言 最近的项目开始进行安全测试 其中有一个安全问题是这样的 应该增加用户登录失败处理功能 限制非法登录次数 建议是增加mysql数据库的登陆失败的锁定功能 相信大家也都会遇到这样的问题 在这里写一下 方便大家直接使用 设置方法 登录mys
  • 封装、继承、多态 详解

    面向对象的三个基本特征 封装 继承 多态 1 封装 1 封装是实现面向对象的第一步 封装就是将数据或函数等集合在一个单元中 类 被封装的对象通常被称为抽象数据类型 2 类具有封装性 类能够把数据和算法 操作数据的函数 组合在一起 构成一个不
  • 【C++】虚函数

    2023年8月23日 周三上午 目录 虚函数 在派生类中重写虚函数 纯虚函数 示例程序 虚函数 在函数返回值前面加上关键字virtual 虚函数必须在类中声明 否则会报错 Error virtual outside class declar
  • SpringBoot整合MyBatis分页组件PageHelper

    介绍 SpringBoot整合MyBatis插件PageHelper实现业务分页逻辑 POM 添加MyBatis PageHelper FastJSON MySQL依赖
  • selenium webdriver一种解决打开chrome浏览器的过程

    1 下载59或58版本的Chrome浏览器 下载地址 http www pc6 com SoftView SoftView 22726 html 2 下载对应的驱动 驱动下载地址如下 当前我使用的版本是2 32 http npm taoba
  • Redis安装与源码调试

    linux版本 64位CentOS 6 5 Redis版本 redis 3 0 6 更新到2016年1月22日 Redis官网 http redis io Redis常用命令 http redis io commands 1 安装Redis