别院牧志知识库 别院牧志知识库
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 工作
  • 规范

  • Linux

  • 数据库

    • MySQL

    • redis

      • Linux 下如何安装 Redis?
        • 实验环境
        • 下载
        • 安装
          • Ubuntu
          • CentOs
        • 配置
        • 附:常用redis管理命令
        • 安装提供Python支持
          • pip 安装
          • 源码安装
        • 参考链接
      • Redis 缓存和 MySQL 数据一致性方案详解
      • Redis 知识总结
      • Redis 哨兵模式配置
      • Redis 中的底层数据结构(1)——双端链表
      • Redis 中的底层数据结构(2)——简单动态字符串(sds)
      • Redis 中的底层数据结构(3)——字典(dict)
      • Redis 中的底层数据结构(4)——整数集合(intset)
      • Redis 中的底层数据结构(5)——压缩链表(ziplist)
      • Redis 中的底层数据结构(6)——压缩字典(zipmap)
      • Redis 中的底层数据结构(7)——跳跃表(zskiplist)
      • 为什么 Redis 这么快?
      • Redis 数据结构
      • Redis 主从复制是怎么实现的?
      • 深入了解 Redis 底层数据结构
    • 数据库操作记录
    • 数据库设计
    • SQLAlchemy 2.0 教程
  • Git

  • 👨‍💻Web

  • 英语

  • Docker

  • 编辑器

  • 网络

  • 前端

  • 存储

  • 备忘录

  • 如何开始你的单元测试
  • 以程序员的视角看中国——西安篇
  • 💻工作
  • 数据库
  • redis
佚名
2019-04-11
目录

Linux 下如何安装 Redis?

Redis是一款高性能的key-value数据库,本文主要记录如何在Linux系统上进行安装,以及为Python开发安装对应的redis模块。

# 实验环境

  • Linux版本

    Ubuntu 18.04 LTS && NeoKylin 3.2
    
    1
  • Python版本

    Python 2.7.15rc1 && Python 2.6.6
    
    1
  • Redis版本

    redis-5.0.4
    
    1
  • redis-py版本

    redis-3.2.1 && redis-2.10.6
    
    1

# 下载

下载地址:http://redis.io/download,下载最新稳定版本源码。

本文使用的版本为 redis-5.0.4。

# 安装

# Ubuntu

  1. 解压缩

    首先要解压Redis压缩包。进入压缩包下载的路径,执行:

    tar xzf redis-5.0.4.tar.gz
    
    1
  2. 使用GCC编译源码

    cd redis-5.0.4
    make
    
    1
    2
  3. 安装Redis

    make install
    
    1
  4. 验证

    root@local:~/temp# redis-server -v
    Redis server v=5.0.4 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=3dcf53963ddc396a
    root@local:~/temp# whereis redis-server
    redis-server: /usr/local/bin/redis-server
    
    1
    2
    3
    4

至此,Redis安装完成。

# CentOs

  1. 编译安装

    make $$ make install
    
    1

    此时报错

    CC adlist.o
    /bin/sh: cc: command not found
    make[1]: *** [adlist.o] Error 127
    make[1]: Leaving directory `/root/temp/redis-5.0.4/src'
    make: *** [all] Error 2
    
    1
    2
    3
    4
    5
  2. 安装 gcc

    yum install gcc -y
    
    1
  3. 重新 make

    make
    
    1

    此时报错

    In file included from adlist.c:34:
    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 `/root/temp/redis-5.0.4/src'
    make: *** [all] Error 2
    
    1
    2
    3
    4
    5
    6

    在构建Redis时选择非默认内存分配器是通过设置MALLOC环境变量完成的, 默认情况下 Redis 是使用malloc为libc编译和链接的。 而libc并不是Linux上默认的分配器,默认的是 jemalloc, 因为 jemalloc 被证明比libc有更少的碎片问题(fragmentation problems)。 但是如果你没有jemalloc 而只有libc 当然 make 出错。 所以有两种解决办法:

    • 方法一(不推荐)
    make MALLOC=libc
    
    1

    • 方法二
    cd deps/
    make hiredis jemalloc linenoise lua geohash-int
    
    1
    2

    原因参见: 浅谈 redis 采用不同内存分配器 tcmalloc 和 jemalloc (opens new window)

    对于tcmalloc,jemalloc和libc对应的三个内存分配器。其性能和碎片率如何呢? 下面是一个简单测试结果,使用Redis自带的redis-benchmark写入等量数据进行测试,数据摘自采用不同分配器时Redis info信息。 我们可以看到,采用tcmalloc时碎片率是最低的,为1.01,jemalloc为1.02,而libc的分配器碎片率为1.31,

  4. 编译安装

    make $$ make install
    
    1
  5. 验证

   redis-server -v
   Redis server v=5.0.4 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=b139020f90f1d493
   whereis redis-server
   redis-server: /usr/local/bin/redis-server
1
2
3
4

至此,Redis安装完成。

# 配置

通过配置文件,设置Redis服务开机自启动。

  1. 设置自启动配置文件

    1. 切换目录

      cd utils/
      
      1
    2. 复制脚本文件

      cp redis_init_script /etc/init.d/redisd		## ①		
      
      1

      将redis_init_script文件重新命名为redisd,作为系统启动服务名(以d结尾表示是自启动服务,约定俗成)。

    3. 修改配置

      vi /etc/init.d/redisd
      
      1

      修改redisd文件,注意要在文件头部加上两句注释来设定该服务的运行级别

      #!/bin/sh
      # chkconfig:   2345 90 10
      
      1
      2
  2. 设置Redis控制脚本的配置文件

    1. 切换目录

      cd -
      cd ..
      
      1
      2
    2. 在redis安装目录下,找到redis.conf文件

      ls
      
      1

      如下

      00-RELEASENOTES  INSTALL     runtest           tests
      BUGS             Makefile    runtest-cluster   utils
      CONTRIBUTING     MANIFESTO   runtest-sentinel
      COPYING          README.md   sentinel.conf
      deps             redis.conf  src
      
      1
      2
      3
      4
      5
    3. 复制配置文件并重命名

      cp redis.conf /etc/redis/6379.conf    ## ②
      
      1
    4. 编辑Redis配置文件

      1. 设置daemonize为yes,使服务可以后台运行:

        # nu:136
        daemonize yes
        
        1
        2
      2. 设置log文件路径:

        # nu:171
        logfile /var/log/redis/redis-server.log
        
        1
        2
      3. 设置持久化文件存放路径:

        # nu:263
        dir /var/lib/redis
        
        1
        2
    5. 保存退出,并创建相应的目录结构:

      mkdir /var/log/redis
      touch /var/log/redis/redis-server.log
      mkdir /var/lib/redis
      
      1
      2
      3
  3. 设置开机自启

    # Ubuntu

    # 赋权
    chmod +x /etc/init.d/redisd
    # 更新系统启动项
    update-rc.d redisd defaults
    
    1
    2
    3
    4

    # CentOS

    [root@master init.d]# chmod +x ./redisd
    [root@master init.d]# chkconfig redisd on
    
    1
    2

# 附:常用redis管理命令

  • 启动Redis服务:
service redisd start
[root@master init.d]# service redisd start
Starting Redis server...
# 验证
[root@master init.d]# ps aux|grep redis|grep -v grep
root      6728  0.1  0.4  55572  9820 ?        Ssl  11:03   0:00 /usr/local/bin/redis-server 127.0.0.1:6379 
1
2
3
4
5
6
  • 关闭服务:
[root@master init.d]# service redisd stop
Stopping ...
Redis stopped
[root@master init.d]# ps aux|grep redis|grep -v grep

1
2
3
4
5
  • 重启服务:
service redisd restart

1
2
  • 在控制台中登录redis客户端:
[root@master init.d]# redis-cli
# 测试redis连通性
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"

1
2
3
4
5
6
7
8
9

# 安装提供Python支持

# pip 安装

pip install redis
1

# 源码安装

去https://pypi.org/project/redis/下载源码,Ubuntu上使用最新版本redis 3.2.1

  1. 解压

    tar -xzvf redis-3.2.1.tar.gz
    
    1
  2. 切换目录

    cd redis-3.2.1
    
    1
  3. 安装

    python setup.py install
    
    1
  4. 验证

    root@local:~/temp/redis-3.2.1# python
    Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34) 
    [GCC 7.3.0] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import redis
    >>> import redis
    >>> 
    >>> r = redis.Redis(host='localhost', port=6379, db=0)
    >>> ret = r.get('hello')
    >>> print ret
    world
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

小插曲

关于 redis-py 的 Python 低版本支持

在CentOS上安装redis-3.2.1的时候由于python版本较低(2.6.6)出现以下问题

[root@master redis-3.2.1]# python setup.py install
Traceback (most recent call last):
  File "setup.py", line 4, in <module>
    from setuptools import setup
ImportError: No module named setuptools
1
2
3
4
5

安装setuptools-0.6c9之后执行python setup.py install报错:

Traceback (most recent call last):
  File "setup.py", line 7, in <module>
    from redis import __version__
  File "/root/temp/pyredis-3.2.1/redis/__init__.py", line 1, in <module>
    from redis.client import Redis, StrictRedis
  File "/root/temp/pyredis-3.2.1/redis/client.py", line 3046
    return {decode(encode(k)): v for k, v in iteritems(data)}
                                   ^
SyntaxError: invalid syntax
1
2
3
4
5
6
7
8
9

去官网查看,发现最新版版本支持为:

Meta
……
 Tags: Redis, key-value store

Requires: Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
1
2
3
4
5

以及

Python Version Support redis-py 3.0 now supports Python 2.7 and Python 3.4+. Python 2.6 and 3.3 support has been dropped.

最后安装较低版本(redis-2.10.6)成功,步骤同上,不再赘述。

读者可以从 这里 (opens new window) 获取历史版本:https://pypi.org/project/redis/#history

# 参考链接

  • Redis Quick Start (opens new window)
  • Ubuntu 安装 Redis 并设置为开机自启动服务 (opens new window)
  • Python 操作 Redis 数据库 (opens new window)

①:内容见 redisd ②:内容见 6379.conf

编辑 (opens new window)
#Redis#NoSQL#数据库#HOWTO
上次更新: 2024-07-15, 08:03:22
MySQL 的 MVCC 机制
Redis 缓存和 MySQL 数据一致性方案详解

← MySQL 的 MVCC 机制 Redis 缓存和 MySQL 数据一致性方案详解→

最近更新
01
提升沟通亲和力的实用策略
03-26
02
工作
07-15
03
如何选房子
06-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 IMOYAO | 别院牧志
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式