Redis服務之簡介與部署

来源:https://www.cnblogs.com/qiuhom-1874/archive/2020/07/26/13378138.html
-Advertisement-
Play Games

Redis是什麼?redis是一款基於BSD協議,開源的非關係型資料庫(nosql資料庫),作者是義大利開發者Salvatore Sanfilippo在2009年發佈,使用C語言編寫;redis是基於記憶體存儲,而且是目前比較流行的鍵值資料庫(key-value database),它提供將記憶體通過... ...


  一、簡介

  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源中的版本和簡介

[[email protected] ~]# 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.

[[email protected] ~]# 

  提示:redis在epel中的版本是3.2.12,目前redis最新的版本是6.0.6,當然我們也可以去第三方網站找最新版本的rpm包,然後使用yum安裝也行;

  yum安裝redis

[[email protected] ~]# 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!
[[email protected] ~]# 

  查看redis的程式環境

[[email protected] ~]# 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
[[email protected] ~]# 

  提示:從上面命令返回的信息大概能夠知道/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

[[email protected] ~]# systemctl start redis
[[email protected] ~]# 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                                          :::*                  
[[email protected] ~]# 

  提示:redis預設監聽在本機的127.0.0.1的6379埠,預設為了安全沒有監聽在其他地址,所以預設配置的redis不能夠遠程連接使用,必須修改配置文件中的監聽地址才可以;

  驗證:用redis-cli連接redis server

  提示:到此如果能夠正常啟動redis,能夠用客戶端連接到redis server 操作redis說明我們部署的redis服務就部署好了;

  2、編譯安裝redis

  準備源碼包,和編譯環境

[[email protected] 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!
[[email protected] yum.repos.d]# 

  提示:redis是C語言編寫的,所以在Linux上編譯C語言程式必須先安裝gcc和一些常用的開發庫;

  下載源碼包

  解壓源碼包併進入到源碼包解壓目錄

[[email protected] ~]# tar xf redis-6.0.6.tar.gz -C /usr/local/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
……省略部分內容……
[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# ls
redis-6.0.6
[[email protected] src]# cd redis-6.0.6/
[[email protected] redis-6.0.6]# 

  編譯並安裝redis到/usr/local/redis

  提示:像這類錯誤,原因是centos上的gcc版本是4.8.5,版本過低導致的,解決辦法就是裝一個新版本的gcc(大於5.3)

  升級gcc

[[email protected] 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!
[[email protected] redis-6.0.6]# 

  提示:安裝centos-release-scl主要是添加scl倉庫地址文件到本地

[[email protected] 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!
[[email protected] redis-6.0.6]#

  切換新版本的gcc

  提示:這種方式是臨時切換方式,如果需要永久切換,我們可以在/etc/profile文件中追加一條 souce /opt/rh/devtoolset-7/enable命令即可;

  現在我們把gcc的版本切換到7.3.1,再來編譯redis看看是否還會有錯誤發生?

[[email protected] redis-6.0.6]# make PREFIX=/usr/local/redis install
make: Warning: File `Makefile' has modification time 2768632 s in the future
cd src && make install
make[1]: Entering directory `/usr/local/src/redis-6.0.6/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/src/redis-6.0.6/src'
make: warning:  Clock skew detected.  Your build may be incomplete.
[[email protected] redis-6.0.6]#

  提示:切換gcc後,再次編譯安裝就沒有報錯了,到此redis編譯安裝就完成了;

  查看編譯安裝好的redis目錄結構

[[email protected] 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
[[email protected] redis-6.0.6]# 

  創建軟連接到/usr/bin/

  創建redis用戶,並拷貝配置文件到redis安裝目錄

   更改redis安裝目錄下的所有文件的屬主和屬組為redis

[[email protected] redis-6.0.6]# chown -R redis.redis /usr/local/redis/
[[email protected] 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
[[email protected] 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
[[email protected] redis-6.0.6]# ll /usr/local/redis/etc/
total 84
-rw-r--r-- 1 redis redis 83392 Jun 18 13:18 redis.conf
[[email protected] 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開啟啟動,關閉開機啟動,查看狀態這些操作;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 二分查找(英語:binary search),也叫折半查找(英語:half-interval search),是一種在有序數組中查找特定元素的搜索演算法。所以,二分查找的前提是數組必須是有序的。 二分查找只適用順序存儲結構。為保持表的有序性,在順序結構里插入和刪除都必須移動大量的結點。因此,二分查找特... ...
  • 記憶體管理的目標: 實現記憶體的分配和回收 合理的分配記憶體空間,提高記憶體利用率,提高記憶體訪問速度 存儲器的層次結構 速度由快到慢,容量由小到大,價格由高到低 寄存器->L1高速緩存 → L2高速緩存 → 主存儲器 → 本地二級存儲 → 遠程二級存儲(web/ftp) 特點:每個層級的存儲器都保存來自下一 ...
  • 目標 1.能夠自動刪除文件 2.能夠判斷文件達到一定量之後,執行目標1 3.自動化運行腳本。 知識點 1.if語句 2.crontab語句 3.賦值語句 編寫 #!bin/bash while [ $(du -sb /home/linuxprobe/Desktop/log | awk '{print ...
  • 1. ZABBIX備份 [[email protected] /]# mkdir -p /soft/zabbixback/zabbix-backup [[email protected] /]# cp /etc/zabbix/zabbix_server.c ...
  • 恩智浦半導體於2017年開始推出的i.MX RT系列重新定義了MCU,其第一款晶元i.MX RT1052,主頻高達600MHz,直接引爆眾多MCU開發者的神經。如今i.MX RT發佈已近三年,陸續推出了9款型號,細心的你會發生其實際上已經衍生為兩大陣營,分別是CM7內核的i.MX RT1xxx系列(... ...
  • 人這一輩子,真的是非常不容易:讀書時,被老師、同學嘲笑,工作時,被老闆、同事嘲笑,就連出去擼個串兒,還可能被朋友嘲笑…… 這些也就算了,畢竟大家還都是同類,都是活生生的人。但是,你如果被 Linux 終端給嘲笑了,你的內心會是什麼感受? 今天要介紹的,是一個非常有趣的 CLI 工具,這個工具可以實現 ...
  • 1.在linux系統下安裝跨系統傳輸文件工具 root用戶下 根目錄輸入 yum -y install lrzsz 2.把apache-jmeter-4.0zip包 用rz命令上傳到linux系統的根目錄下 解壓 3.配置jmeter環境變數 vim /etc/profile 添加 export P ...
  • 西北望鄉何處是,東南見月幾回圓。 月亮又慢悠悠的掛上了天空,趁著睡前夢囈,我就帶領各位可愛的讀者們探索MySql最後的子查詢部分。 說明:有些查詢結果出來結果截圖與題目要求不一樣會出現多餘的欄位是為了方便展示結果的可讀性。實際操作的讀者可以刪除SELECT後面多餘的欄位得到正確的結果。 #WHERE ...
一周排行
    -Advertisement-
    Play Games
  • 比如要拆分“呵呵呵90909086676喝喝999”,下麵當type=0返回的是中文字元串“呵呵呵,喝喝”,type=1返回的是數字字元串“90909086676,999”, private string GetStrings(string str,int type=0) { IList<strin ...
  • Swagger一個優秀的Api介面文檔生成工具。Swagger可以可以動態生成Api介面文檔,有效的降低前後端人員關於Api介面的溝通成本,促進項目高效開發。 1、使用NuGet安裝最新的包:Swashbuckle.AspNetCore。 2、編輯項目文件(NetCoreTemplate.Web.c ...
  • 2020 年 7 月 30 日, 由.NET基金會和微軟 將舉辦一個線上和為期一天的活動,包括 微軟 .NET 團隊的演講者以及社區的演講者。本次線上大會 專註.NET框架構建微服務,演講者分享構建和部署雲原生應用程式的最佳實踐、模式、提示和技巧。有關更多信息和隨時瞭解情況:https://focu... ...
  • #abp框架Excel導出——基於vue #1.技術棧 ##1.1 前端採用vue,官方提供 UI套件用的是iview ##1.2 後臺是abp——aspnetboilerplate 即abp v1,https://github.com/aspnetboilerplate/aspnetboilerp ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:碧茂大數據 PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取 input()輸入 Python提供了 input() 內置函數從標準輸入讀入一 ...
  • 從12年到20年,python以肉眼可見的趨勢超過了java,成為了當今It界人人皆知的編程語言。 python為什麼這麼火? 網路編程語言搜索指數 適合初學者 Python具有語法簡單、語句清晰的特點,這就讓初學者在學習階段可以把精力集中在編程對象和思維方法上。 大佬都在用 Google,YouT ...
  • 在社會上存在一種普遍的對培訓機構的學生一種歧視的現象,具體表現在,比如:當你去公司面試的時候,一旦你說了你是培訓機構出來的,那麼基本上你就涼了,那麼你瞞著不說,然後又通過了面試成功入職,但是以後一旦在公司被髮現有培訓經歷,可能會面臨被降薪,甚至被辭退,培訓機構出來的學生,在用人單位眼裡就是能力低下的 ...
  • from typing import List# 這道題看了大佬寫的代碼,經過自己的理解寫出來了。# 從最外圍的四周找有沒有為O的,如果有的話就進入深搜函數,然後深搜遍歷# 判斷上下左右的位置是否為Oclass Solution: def solve(self, board: List[List[s ...
  • import requests; import re; import os; # 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, li ...
  • import requests; import re; import os; import parsel; 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537. ...