我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis简介与部署 - Linux

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis简介与部署 - Linux

Redis简介与部署 - Linux

Redis是什么?redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-value database),它提供将内存通过网络远程共享的一种服务,提供类似功能的还有memcache,但相比 memcache,redis 还提供了易扩展、高性能、具备数据持久性等功能。主要的应用场景有session共享,常用于web集群中的tomcat或PHP中多web服务器的session共享;消息队列,ELK的日志缓存,部分业务的订阅发布系统;计数器,常用于访问排行榜,商品浏览数等和次数相关的数值统计场景;缓存,常用于数据查询、电商网站商品信息、新闻内容等;

  一、简介

  Redis是什么?redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-value database),它提供将内存通过网络远程共享的一种服务,提供类似功能的还有memcache,但相比 memcache,redis 还提供了易扩展、高性能、具备数据持久性等功能。主要的应用场景有session共享,常用于web集群中的tomcat或PHP中多web服务器的session共享;消息队列,ELK的日志缓存,部分业务的订阅发布系统;计数器,常用于访问排行榜,商品浏览数等和次数相关的数值统计场景;缓存,常用于数据查询、电商网站商品信息、新闻内容等;相对memcache,redis支持数据的持久化,可以将内存的数据保存在磁盘中,重启redis服务或者服务器之后可以从备份文件中恢复数据到内存继续使用;支持string(字符串)、hashes(关联数组)、list(列表)、set(集合)、sorted set(有序集合)、空间索引等数据结构的数据;支持数据的备份,可以实现类似于mysql中的主从模式的数据备份,支持使用快照和AOF(append only file)的数据持久化;支持比memcache更大的value数据,在memcache中只单个key value最大支持1MB,而redis最大支持512MB;Redis 是单线程,而 memcache 是多线程,所以单机情况下没有 memcache 并发高,但 redis 支持分布式集群以实现更高的并发,单 Redis 实例可以实现数万并发。除此以外,redis也支持集群横向扩展,基于redis cluster 的横向扩展,可以实现分布式集群,大幅度提升性能和数据安全;

  二、redis安装

  redis安装支持yum直接安装,前提是要配好epel源,该软件存放在epel仓库中;当然也可以下载源码直接编译安装,根据自己生产环境的需求,yum安装的版本稍微要旧一点,如果对应版本能够满足现有业务的需求,我个人觉得编译安装就没有必要;通常较新的程序在生产环境不建议使用;

  1、yum安装

  查看redis在epel源中的版本和简介

[root@node1 ~]# yum info redis
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Available Packages
Name        : redis
Arch        : x86_64
Version     : 3.2.12
Release     : 2.el7
Size        : 544 k
Repo        : epel/x86_64
Summary     : A persistent key-value database
URL         : http://redis.io
License     : BSD
Description : Redis is an advanced key-value store. It is often referred to as a data
            : structure server since keys can contain strings, hashes, lists, sets and
            : sorted sets.
            : 
            : You can run atomic operations on these types, like appending to a string;
            : incrementing the value in a hash; pushing to a list; computing set
            : intersection, union and difference; or getting the member with highest
            : ranking in a sorted set.
            : 
            : In order to achieve its outstanding performance, Redis works with an
            : in-memory dataset. Depending on your use case, you can persist it either
            : by dumping the dataset to disk every once in a while, or by appending
            : each command to a log.
            : 
            : Redis also supports trivial-to-setup master-slave replication, with very
            : fast non-blocking first synchronization, auto-reconnection on net split
            : and so forth.
            : 
            : Other features include Transactions, Pub/Sub, Lua scripting, Keys with a
            : limited time-to-live, and configuration settings to make Redis behave like
            : a cache.
            : 
            : You can use Redis from most programming languages also.

[root@node1 ~]# 

  提示:redis在epel中的版本是3.2.12,目前redis最新的版本是6.0.6,当然我们也可以去第三方网站找最新版本的rpm包,然后使用yum安装也行;

  yum安装redis

[root@node1 ~]# yum install -y redis
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package redis.x86_64 0:3.2.12-2.el7 will be installed
--> Processing Dependency: libjemalloc.so.1()(64bit) for package: redis-3.2.12-2.el7.x86_64
--> Running transaction check
---> Package jemalloc.x86_64 0:3.6.0-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                     Arch                      Version                            Repository               Size
========================================================================================================================
Installing:
 redis                       x86_64                    3.2.12-2.el7                       epel                    544 k
Installing for dependencies:
 jemalloc                    x86_64                    3.6.0-1.el7                        epel                    105 k

Transaction Summary
========================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 648 k
Installed size: 1.7 M
Downloading packages:
(1/2): jemalloc-3.6.0-1.el7.x86_64.rpm                                                           | 105 kB  00:00:00     
(2/2): redis-3.2.12-2.el7.x86_64.rpm                                                             | 544 kB  00:00:00     
------------------------------------------------------------------------------------------------------------------------
Total                                                                                   1.4 MB/s | 648 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : jemalloc-3.6.0-1.el7.x86_64                                                                          1/2 
  Installing : redis-3.2.12-2.el7.x86_64                                                                            2/2 
  Verifying  : redis-3.2.12-2.el7.x86_64                                                                            1/2 
  Verifying  : jemalloc-3.6.0-1.el7.x86_64                                                                          2/2 

Installed:
  redis.x86_64 0:3.2.12-2.el7                                                                                           

Dependency Installed:
  jemalloc.x86_64 0:3.6.0-1.el7                                                                                         

Complete!
[root@node1 ~]# 

  查看redis的程序环境

[root@node1 ~]# rpm -ql redis
/etc/logrotate.d/redis
/etc/redis-sentinel.conf
/etc/redis.conf
/etc/systemd/system/redis-sentinel.service.d
/etc/systemd/system/redis-sentinel.service.d/limit.conf
/etc/systemd/system/redis.service.d
/etc/systemd/system/redis.service.d/limit.conf
/usr/bin/redis-benchmark
/usr/bin/redis-check-aof
/usr/bin/redis-check-rdb
/usr/bin/redis-cli
/usr/bin/redis-sentinel
/usr/bin/redis-server
/usr/lib/systemd/system/redis-sentinel.service
/usr/lib/systemd/system/redis.service
/usr/libexec/redis-shutdown
/usr/share/doc/redis-3.2.12
/usr/share/doc/redis-3.2.12/00-RELEASENOTES
/usr/share/doc/redis-3.2.12/BUGS
/usr/share/doc/redis-3.2.12/CONTRIBUTING
/usr/share/doc/redis-3.2.12/MANIFESTO
/usr/share/doc/redis-3.2.12/README.md
/usr/share/licenses/redis-3.2.12
/usr/share/licenses/redis-3.2.12/COPYING
/usr/share/man/man1/redis-benchmark.1.gz
/usr/share/man/man1/redis-check-aof.1.gz
/usr/share/man/man1/redis-check-rdb.1.gz
/usr/share/man/man1/redis-cli.1.gz
/usr/share/man/man1/redis-sentinel.1.gz
/usr/share/man/man1/redis-server.1.gz
/usr/share/man/man5/redis-sentinel.conf.5.gz
/usr/share/man/man5/redis.conf.5.gz
/var/lib/redis
/var/log/redis
/var/run/redis
[root@node1 ~]# 

  提示:从上面命令返回的信息大概能够知道/etc/redis.conf是redis的配置文件,/usr/bin/redis-server是服务端程序,/usr/bin/redis-cli是客户端程序,/usr/lib/systemd/system/redis.service是redis的unit file服务管理脚本,/var/lib/redis是redis的数据目录;

  启动redis

[root@node1 ~]# systemctl start redis
[root@node1 ~]# ss -ntl
State      Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
LISTEN     0      128                      127.0.0.1:6379                                         *:*                  
LISTEN     0      128                              *:22                                           *:*                  
LISTEN     0      100                      127.0.0.1:25                                           *:*                  
LISTEN     0      128                             :::22                                          :::*                  
LISTEN     0      100                            ::1:25                                          :::*                  
[root@node1 ~]# 

  提示:redis默认监听在本机的127.0.0.1的6379端口,默认为了安全没有监听在其他地址,所以默认配置的redis不能够远程连接使用,必须修改配置文件中的监听地址才可以;

  验证:用redis-cli连接redis server

  提示:到此如果能够正常启动redis,能够用客户端连接到redis server 操作redis说明我们部署的redis服务就部署好了;

  2、编译安装redis

  准备源码包,和编译环境

[root@node2 yum.repos.d]# yum groupinstall "development tools"
Loaded plugins: fastestmirror
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
extras                                                                                           | 2.9 kB  00:00:00     
extras/7/x86_64/primary_db                                                                       | 205 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package autoconf.noarch 0:2.69-11.el7 will be installed
--> Processing Dependency: m4 >= 1.4.14 for package: autoconf-2.69-11.el7.noarch
---> Package automake.noarch 0:1.13.4-3.el7 will be installed
--> Processing Dependency: perl(Thread::Queue) for package: automake-1.13.4-3.el7.noarch
--> Processing Dependency: perl(TAP::Parser) for package: automake-1.13.4-3.el7.noarch
……省略部分内容……
Installed:
  autoconf.noarch 0:2.69-11.el7       automake.noarch 0:1.13.4-3.el7                  bison.x86_64 0:3.0.4-2.el7       
  byacc.x86_64 0:1.9.20130304-3.el7   cscope.x86_64 0:15.8-10.el7                     ctags.x86_64 0:5.8-13.el7        
  diffstat.x86_64 0:1.57-4.el7        doxygen.x86_64 1:1.8.5-4.el7                    elfutils.x86_64 0:0.176-4.el7    
  flex.x86_64 0:2.5.37-6.el7          gcc.x86_64 0:4.8.5-39.el7                       gcc-c++.x86_64 0:4.8.5-39.el7    
  gcc-gfortran.x86_64 0:4.8.5-39.el7  indent.x86_64 0:2.2.11-13.el7                   intltool.noarch 0:0.50.2-7.el7   
  libtool.x86_64 0:2.4.2-22.el7_3     patch.x86_64 0:2.7.1-12.el7_7                   patchutils.x86_64 0:0.3.3-4.el7  
  rcs.x86_64 0:5.9.0-7.el7            redhat-rpm-config.noarch 0:9.1.0-88.el7.centos  rpm-build.x86_64 0:4.11.3-43.el7 
  rpm-sign.x86_64 0:4.11.3-43.el7     subversion.x86_64 0:1.7.14-14.el7               swig.x86_64 0:2.0.10-5.el7       
  systemtap.x86_64 0:4.0-11.el7      

Dependency Installed:
  apr.x86_64 0:1.4.8-5.el7                                 apr-util.x86_64 0:1.5.2-6.el7                               
  avahi-libs.x86_64 0:0.6.31-20.el7                        boost-date-time.x86_64 0:1.53.0-28.el7                      
  boost-system.x86_64 0:1.53.0-28.el7                      boost-thread.x86_64 0:1.53.0-28.el7                         
  bzip2.x86_64 0:1.0.6-13.el7                              cpp.x86_64 0:4.8.5-39.el7                                   
  dwz.x86_64 0:0.11-3.el7                                  dyninst.x86_64 0:9.3.1-3.el7                                
  efivar-libs.x86_64 0:36-12.el7                           emacs-filesystem.noarch 1:24.3-23.el7                       
  gdb.x86_64 0:7.6.1-119.el7                               gettext-common-devel.noarch 0:0.19.8.1-3.el7                
  gettext-devel.x86_64 0:0.19.8.1-3.el7                    glibc-devel.x86_64 0:2.17-307.el7.1                         
  glibc-headers.x86_64 0:2.17-307.el7.1                    gnutls.x86_64 0:3.3.29-9.el7_6                              
  json-c.x86_64 0:0.11-4.el7_0                             kernel-debug-devel.x86_64 0:3.10.0-1127.13.1.el7            
  kernel-headers.x86_64 0:3.10.0-1127.13.1.el7             libdwarf.x86_64 0:20130207-4.el7                            
  libgfortran.x86_64 0:4.8.5-39.el7                        libmodman.x86_64 0:2.0.1-8.el7                              
  libmpc.x86_64 0:1.0.1-3.el7                              libproxy.x86_64 0:0.4.11-11.el7                             
  libquadmath.x86_64 0:4.8.5-39.el7                        libquadmath-devel.x86_64 0:4.8.5-39.el7                     
  libstdc++-devel.x86_64 0:4.8.5-39.el7                    m4.x86_64 0:1.4.16-10.el7                                   
  mokutil.x86_64 0:15-2.el7.centos                         mpfr.x86_64 0:3.1.1-4.el7                                   
  neon.x86_64 0:0.30.0-4.el7                               nettle.x86_64 0:2.7.1-8.el7                                 
  pakchois.x86_64 0:0.4-10.el7                             perl-Test-Harness.noarch 0:3.28-3.el7                       
  perl-Thread-Queue.noarch 0:3.02-2.el7                    perl-XML-Parser.x86_64 0:2.41-10.el7                        
  perl-srpm-macros.noarch 0:1-8.el7                        python-srpm-macros.noarch 0:3-32.el7                        
  subversion-libs.x86_64 0:1.7.14-14.el7                   systemtap-client.x86_64 0:4.0-11.el7                        
  systemtap-devel.x86_64 0:4.0-11.el7                      systemtap-runtime.x86_64 0:4.0-11.el7                       
  trousers.x86_64 0:0.3.14-2.el7                           unzip.x86_64 0:6.0-21.el7                                   
  zip.x86_64 0:3.0-11.el7                                 

Dependency Updated:
  dbus.x86_64 1:1.10.24-14.el7_8          dbus-libs.x86_64 1:1.10.24-14.el7_8    elfutils-libelf.x86_64 0:0.176-4.el7  
  elfutils-libs.x86_64 0:0.176-4.el7      gettext.x86_64 0:0.19.8.1-3.el7        gettext-libs.x86_64 0:0.19.8.1-3.el7  
  glibc.x86_64 0:2.17-307.el7.1           glibc-common.x86_64 0:2.17-307.el7.1   libgcc.x86_64 0:4.8.5-39.el7          
  libgomp.x86_64 0:4.8.5-39.el7           libstdc++.x86_64 0:4.8.5-39.el7        rpm.x86_64 0:4.11.3-43.el7            
  rpm-build-libs.x86_64 0:4.11.3-43.el7   rpm-libs.x86_64 0:4.11.3-43.el7        rpm-python.x86_64 0:4.11.3-43.el7     

Complete!
[root@node2 yum.repos.d]# 

  提示:redis是C语言编写的,所以在Linux上编译C语言程序必须先安装gcc和一些常用的开发库;

  下载源码包

  解压源码包并进入到源码包解压目录

[root@node2 ~]# tar xf redis-6.0.6.tar.gz -C /usr/local/class="lazy" data-src/
tar: redis-6.0.6/.github/workflows/ci.yml: time stamp 2020-07-20 14:08:26 is 2772054.289890648 s in the future
tar: redis-6.0.6/.github/workflows/daily.yml: time stamp 2020-07-20 14:08:26 is 2772054.289327433 s in the future
tar: redis-6.0.6/.github/workflows: time stamp 2020-07-20 14:08:26 is 2772054.289233619 s in the future
tar: redis-6.0.6/.github: time stamp 2020-07-20 14:08:26 is 2772054.289183193 s in the future
tar: redis-6.0.6/.gitignore: time stamp 2020-07-20 14:08:26 is 2772054.289072272 s in the future
tar: redis-6.0.6/00-RELEASENOTES: time stamp 2020-07-20 14:08:26 is 2772054.288536889 s in the future
tar: redis-6.0.6/BUGS: time stamp 2020-07-20 14:08:26 is 2772054.288364759 s in the future
tar: redis-6.0.6/CONTRIBUTING: time stamp 2020-07-20 14:08:26 is 2772054.287142408 s in the future
……省略部分内容……
[root@node2 ~]# cd /usr/local/class="lazy" data-src/
[root@node2 class="lazy" data-src]# ls
redis-6.0.6
[root@node2 class="lazy" data-src]# cd redis-6.0.6/
[root@node2 redis-6.0.6]# 

  编译并安装redis到/usr/local/redis

  提示:像这类错误,原因是centos上的gcc版本是4.8.5,版本过低导致的,解决办法就是装一个新版本的gcc(大于5.3)

  升级gcc

[root@node2 redis-6.0.6]# yum install centos-release-scl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package centos-release-scl.noarch 0:2-3.el7.centos will be installed
--> Processing Dependency: centos-release-scl-rh for package: centos-release-scl-2-3.el7.centos.noarch
--> Running transaction check
---> Package centos-release-scl-rh.noarch 0:2-3.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                              Arch                  Version                         Repository             Size
========================================================================================================================
Installing:
 centos-release-scl                   noarch                2-3.el7.centos                  extras                 12 k
Installing for dependencies:
 centos-release-scl-rh                noarch                2-3.el7.centos                  extras                 12 k

Transaction Summary
========================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 24 k
Installed size: 39 k
Is this ok [y/d/N]: y
Downloading packages:
(1/2): centos-release-scl-2-3.el7.centos.noarch.rpm                                              |  12 kB  00:00:00     
(2/2): centos-release-scl-rh-2-3.el7.centos.noarch.rpm                                           |  12 kB  00:00:00     
------------------------------------------------------------------------------------------------------------------------
Total                                                                                    83 kB/s |  24 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : centos-release-scl-rh-2-3.el7.centos.noarch                                                          1/2 
  Installing : centos-release-scl-2-3.el7.centos.noarch                                                             2/2 
  Verifying  : centos-release-scl-2-3.el7.centos.noarch                                                             1/2 
  Verifying  : centos-release-scl-rh-2-3.el7.centos.noarch                                                          2/2 

Installed:
  centos-release-scl.noarch 0:2-3.el7.centos                                                                            

Dependency Installed:
  centos-release-scl-rh.noarch 0:2-3.el7.centos                                                                         

Complete!
[root@node2 redis-6.0.6]# 

  提示:安装centos-release-scl主要是添加scl仓库地址文件到本地

[root@node2 redis-6.0.6]# yum install devtoolset-7-gcc*
Loaded plugins: fastestmirror
centos-sclo-rh                                                                                   | 3.0 kB  00:00:00     
centos-sclo-sclo                                                                                 | 3.0 kB  00:00:00     
(1/2): centos-sclo-sclo/x86_64/primary_db                                                        | 291 kB  00:00:00     
(2/2): centos-sclo-rh/x86_64/primary_db                                                          | 2.9 MB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * centos-sclo-rh: mirrors.aliyun.com
 * centos-sclo-sclo: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package devtoolset-7-gcc.x86_64 0:7.3.1-5.16.el7 will be installed
--> Processing Dependency: devtoolset-7-binutils >= 2.22.52.0.1 for package: devtoolset-7-gcc-7.3.1-5.16.el7.x86_64
……省略部分内容……
Installed:
  devtoolset-7-gcc.x86_64 0:7.3.1-5.16.el7                     devtoolset-7-gcc-c++.x86_64 0:7.3.1-5.16.el7            
  devtoolset-7-gcc-gdb-plugin.x86_64 0:7.3.1-5.16.el7          devtoolset-7-gcc-gfortran.x86_64 0:7.3.1-5.16.el7       
  devtoolset-7-gcc-plugin-devel.x86_64 0:7.3.1-5.16.el7       

Dependency Installed:
  audit-libs-python.x86_64 0:2.8.5-4.el7                    checkpolicy.x86_64 0:2.5-8.el7                             
  devtoolset-7-binutils.x86_64 0:2.28-11.el7                devtoolset-7-libquadmath-devel.x86_64 0:7.3.1-5.16.el7     
  devtoolset-7-libstdc++-devel.x86_64 0:7.3.1-5.16.el7      devtoolset-7-runtime.x86_64 0:7.1-4.el7                    
  gmp-devel.x86_64 1:6.0.0-15.el7                           libcgroup.x86_64 0:0.41-21.el7                             
  libgfortran4.x86_64 0:8.3.1-2.1.1.el7                     libmpc-devel.x86_64 0:1.0.1-3.el7                          
  libsemanage-python.x86_64 0:2.5-14.el7                    mpfr-devel.x86_64 0:3.1.1-4.el7                            
  policycoreutils-python.x86_64 0:2.5-34.el7                python-IPy.noarch 0:0.75-6.el7                             
  scl-utils.x86_64 0:20130529-19.el7                        setools-libs.x86_64 0:3.3.8-4.el7                          

Dependency Updated:
  audit.x86_64 0:2.8.5-4.el7                audit-libs.x86_64 0:2.8.5-4.el7          libselinux.x86_64 0:2.5-15.el7     
  libselinux-python.x86_64 0:2.5-15.el7     libselinux-utils.x86_64 0:2.5-15.el7     libsemanage.x86_64 0:2.5-14.el7    
  libsepol.x86_64 0:2.5-10.el7              policycoreutils.x86_64 0:2.5-34.el7     

Complete!
[root@node2 redis-6.0.6]#

  切换新版本的gcc

  提示:这种方式是临时切换方式,如果需要永久切换,我们可以在/etc/profile文件中追加一条 souce /opt/rh/devtoolset-7/enable命令即可;

  现在我们把gcc的版本切换到7.3.1,再来编译redis看看是否还会有错误发生?

[root@node2 redis-6.0.6]# make PREFIX=/usr/local/redis install
make: Warning: File `Makefile" has modification time 2768632 s in the future
cd class="lazy" data-src && make install
make[1]: Entering directory `/usr/local/class="lazy" data-src/redis-6.0.6/class="lazy" data-src"
make[1]: Warning: File `Makefile" has modification time 2768632 s in the future
    CC adlist.o
    CC quicklist.o
    CC ae.o
    CC anet.o
    CC dict.o
    CC server.o
    CC sds.o
    CC zmalloc.o
    CC lzf_c.o
    CC lzf_d.o
    CC pqsort.o
    CC zipmap.o
    CC sha1.o
    CC ziplist.o
    CC release.o
    CC networking.o
    CC util.o
    CC object.o
    CC db.o
    CC replication.o
    CC rdb.o
    CC t_string.o
    CC t_list.o
    CC t_set.o
    CC t_zset.o
    CC t_hash.o
    CC config.o
    CC aof.o
    CC pubsub.o
    CC multi.o
    CC debug.o
    CC sort.o
    CC intset.o
    CC syncio.o
    CC cluster.o
    CC crc16.o
    CC endianconv.o
    CC slowlog.o
    CC scripting.o
    CC bio.o
    CC rio.o
    CC rand.o
    CC memtest.o
    CC crcspeed.o
    CC crc64.o
    CC bitops.o
    CC sentinel.o
    CC notify.o
    CC setproctitle.o
    CC blocked.o
    CC hyperloglog.o
    CC latency.o
    CC sparkline.o
    CC redis-check-rdb.o
    CC redis-check-aof.o
    CC geo.o
    CC lazyfree.o
    CC module.o
    CC evict.o
    CC expire.o
    CC geohash.o
    CC geohash_helper.o
    CC childinfo.o
    CC defrag.o
    CC siphash.o
    CC rax.o
    CC t_stream.o
    CC listpack.o
    CC localtime.o
    CC lolwut.o
    CC lolwut5.o
    CC lolwut6.o
    CC acl.o
    CC gopher.o
    CC tracking.o
    CC connection.o
    CC tls.o
    CC sha256.o
    CC timeout.o
    CC setcpuaffinity.o
    LINK redis-server
    INSTALL redis-sentinel
    CC redis-cli.o
    LINK redis-cli
    CC redis-benchmark.o
    LINK redis-benchmark
    INSTALL redis-check-rdb
    INSTALL redis-check-aof

Hint: It"s a good idea to run "make test" ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: warning:  Clock skew detected.  Your build may be incomplete.
make[1]: Leaving directory `/usr/local/class="lazy" data-src/redis-6.0.6/class="lazy" data-src"
make: warning:  Clock skew detected.  Your build may be incomplete.
[root@node2 redis-6.0.6]#

  提示:切换gcc后,再次编译安装就没有报错了,到此redis编译安装就完成了;

  查看编译安装好的redis目录结构

[root@node2 redis-6.0.6]# tree /usr/local/redis/
/usr/local/redis/
└── bin
    ├── redis-benchmark
    ├── redis-check-aof
    ├── redis-check-rdb
    ├── redis-cli
    ├── redis-sentinel -> redis-server
    └── redis-server

1 directory, 6 files
[root@node2 redis-6.0.6]# 

  创建软连接到/usr/bin/

  创建redis用户,并拷贝配置文件到redis安装目录

   更改redis安装目录下的所有文件的属主和属组为redis

[root@node2 redis-6.0.6]# chown -R redis.redis /usr/local/redis/
[root@node2 redis-6.0.6]# ll /usr/local/redis/
total 0
drwxr-xr-x 2 redis redis 134 Jun 18 13:04 bin
drwxr-xr-x 2 redis redis  24 Jun 18 13:18 etc
[root@node2 redis-6.0.6]# ll /usr/local/redis/bin/
total 35700
-rwxr-xr-x 1 redis redis 4717872 Jun 18 13:04 redis-benchmark
-rwxr-xr-x 1 redis redis 8952752 Jun 18 13:04 redis-check-aof
-rwxr-xr-x 1 redis redis 8952752 Jun 18 13:04 redis-check-rdb
-rwxr-xr-x 1 redis redis 4973312 Jun 18 13:04 redis-cli
lrwxrwxrwx 1 redis redis      12 Jun 18 13:04 redis-sentinel -> redis-server
-rwxr-xr-x 1 redis redis 8952752 Jun 18 13:04 redis-server
[root@node2 redis-6.0.6]# ll /usr/local/redis/etc/
total 84
-rw-r--r-- 1 redis redis 83392 Jun 18 13:18 redis.conf
[root@node2 redis-6.0.6]# 

  前台启动redis

  提示:前台启动redis它给了我们三个警告,第一个是backlog设置的是511,但是/proc/sys/net/core/somaxconn设置的是128,需要更改;第二是是内核参数overcommit_memory设置的是0,如果设置成0在内核将检查是否有足够的可用内存供应用进程使用时,如果有足够的可用内存,内存申请允许,否则内存申请失败,并把错误返回给应用进程。这个内核参数有三个值0,1,2;其中1表示内核允许分配所有的物理内存,而不管当前的内存状态如何。2表示内核允许分配超过所有物理内存和交换空间总和的内存;第三个警告是内核开启了大页内存动态分配,需要关闭,让redis自己负责内存管理;

  解决警告提示

  提示:在centos7上/etc/rc.d/rc.local这个文件是没有执行权限的,这意味着我们在这个文件中写的开机启动命令是不会执行的,我们需要给它加上执行权限,在开机启动时里面写的开机启动命令才会被执行;在centos6上我们不需要给它加执行权限;

  再次前台启动redis看看,看看是否还会有警告信息

  验证6379端口是否启动,是否可以用redis-cli连接到redis-server上?

  提示:可以看到重新开一个终端,能够看到6379端口监听在127.0.0.1这个地址上,并且我们使用redis-cli也可以正常连接到redis-server上正常操作;

  给redis提供unit file让systemd来管理redis

  提示:上面的ExecStart需要根据redis-server所在目录来指定

  unit file

[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=forking
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
View Code

  修改配置文件让redis默认后台运行

  验证:用systemctl命令来管理redis, 看看是否能够起停redis?

  提示:可以看到用systemd可以正常的启动,重启,停止redis,设置redis开启启动,关闭开机启动,查看状态这些操作;

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis简介与部署 - Linux

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Redis简介与部署 - Linux

Redis是什么?redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-value
Redis简介与部署 - Linux
2019-04-30

Redis服务之简介与部署 - Linux

Redis是什么?redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-value
Redis服务之简介与部署 - Linux
2016-06-07

PMM--简介与部署

Percona Monitoring and Management是percona一款开源的用于管理和监控MySQL 和MongoDB性能的开源平台,通过PMM客户端收集到的DB监控数据用第三方软件Grafana画图展示出来,包括两个部分:
2023-01-31

linux环境部署redis

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。解压缩,进入redis目录 make && make install 编译安装
2023-06-05

slmgr.vbs介绍与VA2.0部署

天下没有免费的午餐,即使有也不可能永久的免费,就像是微软的Windows一样。对于企业用户而言,企业发展越快,规模越大,使用盗版的风险也就越大。而且微软对盗版软件打压力度也在不断增大,企业软件正版化成为大势所趋。批量授权管理便成为一个值得思
2023-05-24

Linux下如何部署redis

这篇文章主要介绍“Linux下如何部署redis”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux下如何部署redis”文章能帮助大家解决问题。简单来说 redis 就是一个数据库,不过与传统
2023-06-27

redis在linux上的部署

redis在linux上的部署1.在官网下载Linux版本redis2.拷贝到linux服务器上,解压到指定目录3.解压后得到redis文件夹-----移动到自己知道的文件位置4.注:redis是c语言编写,需要依托c语言环境yum install gcc-c
redis在linux上的部署
2014-10-02

redis怎么在linux上部署

这篇文章主要介绍了redis怎么在linux上部署的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇redis怎么在linux上部署文章都会有所收获,下面我们一起来看看吧。1.在官网下载Linux版本redis2.
2023-06-29

TIDB简介及TIDB部署、原理和使用介绍

TiDB简介及TiDB部署、原理和使用介绍 从MySQL架构到TiDB 数据库分类 ​ 介绍TiDB数据库之前,先引入使用场景。如今的数据库种类繁多,RDBMS(关系型数据库)、NoSQL(Not Only SQL)、NewSQL,在数据库
2023-08-17

Linux中Redis怎么安装部署

这篇文章主要介绍“Linux中Redis怎么安装部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux中Redis怎么安装部署”文章能帮助大家解决问题。1、 下载redis直接使用wget 拉
2023-06-30

slmgr.vbs介绍与VA2.0的部署方法

本篇内容介绍了“slmgr.vbs介绍与VA2.0的部署方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  天下没有免费的午餐,即使有也不
2023-06-14

tomcat监控工具probe的简介和部署

这篇文章主要介绍“tomcat监控工具probe的简介和部署”,在日常操作中,相信很多人在tomcat监控工具probe的简介和部署问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”tomcat监控工具probe
2023-06-04

编程热搜

目录