Redis 5.0部署

前言

redis支持的數據類型:

  • 字符串(string)。
  • 哈希表(hash)。
  • 列表(list)。
  • 集合(set)。
  • 有序集合(zset)。
  • 位圖(bitmaps)。
  • HyperLoglogs、GEO等。

redis特性如下:

  • 速度快:基於內存工作,使用離OS最近的C語言編寫,使用單線程架構,預防了多線程可能產生的競爭問題。
  • 基於鍵值對的數據結構服務器:redis中的值不僅僅可以是字符串,關於其支持的數據類型已經在文章開頭列出來了。
  • 豐富的功能:
    • 1.鍵過期功能,用來實現緩存。
    • 2.發佈訂閱功能,用來實現消息系統。
    • 3.支持Lua腳本,可以利用Lua創造出新的Redis命令。
    • 4.簡單的事務功能,能在一定程度上保證事務的特性。
    • 5.提供了流水線(pipeline)功能,這樣客戶端能將一批命令一次性傳到redis,較少網絡開銷。
  • 簡單穩定。
  • 客戶端語言多:支持java、PHP、Python、C、C++、Nodejs等。
  • 數據持久化:redis工作在內存中,支持兩種持久化方式:RDB、AOF來寫入到硬盤中。
  • 主從複製:Redis提供了複製功能,實現了多個相同數據的redis副本。
  • 高可用和分佈式:Redis從2.8版本正式提供了高可用實現redis Sentinel,它能夠保證Reids節點的故障發現和故障自動轉移,從3.0版本提供了分佈式實現Redis
    Cluster,他是redis真正的分佈式實現,提供了高可用、讀寫和容量的擴展性。

redis的7個使用場景:

  • 緩存。
  • 計數器。
  • 隊列。
  • 位操作(大數據處理)。
  • 分佈式鎖與單線程機制。
  • 最新列表。
  • 排行榜。

一 、 部署redis 5.0

1、環境準備

OS 主機名 IP
Centos 7.5 redis 192.168.20.2

2、下載並解壓

[root@redis src]# wget http://download.redis.io/releases/redis-5.0.5.tar.gz
[root@redis src]# tar zxf redis-5.0.5.tar.gz 
[root@redis src]# cd redis-5.0.5/
[root@redis redis-5.0.5]# make

3、準備工作目錄及redis所需文件

[root@redis redis-5.0.5]# mkdir -p /usr/local/redis/{bin,conf,data}   #創建目錄
[root@redis redis-5.0.5]# cp src/redis* /usr/local/redis/bin/    #拷貝命令
[root@redis redis-5.0.5]# cp redis.conf /usr/local/redis/conf/    # 拷貝配置文件
[root@redis redis-5.0.5]# cd /usr/local/redis/bin/   #進入命令目錄下,刪除不必要的文件
[root@redis bin]# rm -rf *.c
[root@redis bin]# rm -rf *.h
[root@redis bin]# rm -rf *.o
[root@redis bin]# cd ../conf/
[root@redis conf]# cp redis.conf{,.bak}    #備份配置文件
[root@redis conf]# egrep -v '^$|^#' redis.conf.bak > redis.conf   
#過濾註釋及空行以便生成新的配置文件

4、修改配置文件

[root@redis conf]# vim redis.conf      #更改配置文件如下
bind 0.0.0.0    #更改位監聽所有地址
port 6379
daemonize yes     #啓用守護進程
pidfile /usr/local/redis/data/redis_6379.pid    #指定pid文件
logfile "/usr/local/redis/data/redis.log"   #指定日誌文件
#添加命令路徑到全局命令搜索路徑下
[root@redis bin]# echo 'export PATH=${PATH}:/usr/local/redis/bin' >> /etc/profile
[root@redis bin]# source /etc/profile
[root@redis bin]# redis-server -v   #查看redis版本
Redis server v=5.0.5 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=94d37e8f5f58aed5

5、啓動redis

[root@redis bin]# redis-server /usr/local/redis/conf/redis.conf   #啓動redis
[root@redis bin]# ss -anpt | grep 6379    #確定端口在監聽
LISTEN     0      128          *:6379                     *:*                   users:(("redis-server",pid=66992,fd=6))
[root@redis bin]# redis-cli    #本機可直接使用redis-cli進行登錄
127.0.0.1:6379> 
[root@redis bin]# redis-cli -h 192.168.20.2 -p 6379   #若遠端登錄,則需要指定IP及端口
192.168.20.2:6379> 

6、查看redis日誌,解決warning問題

[root@redis bin]# cat /usr/local/redis/data/redis.log   #查看redis日誌

會發現redis在啓動時,報有以下幾個warning:

2020-03-02_132834

接下來就解決這些warning問題(如果不解決這些問題,redis的性能會受到很大的影響)。

1)解決最大打開文件數問題

[root@redis ~]# ulimit -n    #查看當前值
1024
[root@redis ~]# vim /etc/security/limits.conf      #在文件末尾寫入下面內容
*   -   nofile      10240
#修改後,重新登錄即可生效,重新登錄後再次查看當前值
[root@redis ~]# ulimit -n
10240

2)解決TCP積壓值過小問題

[root@redis ~]# echo "net.core.somaxconn = 1024" > /etc/sysctl.d/redis.conf
[root@redis ~]# sysctl -p /etc/sysctl.d/redis.conf   #刷新使其生效
net.core.somaxconn = 1024

3)解決內存方面warning問題

[root@redis ~]# echo "vm.overcommit_memory = 1" >> /etc/sysctl.d/redis.conf
[root@redis ~]# sysctl -p /etc/sysctl.d/redis.conf   #刷新使其生效
net.core.somaxconn = 1024
vm.overcommit_memory = 1

4)解決其他warning問題

[root@redis ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
#上述指令只是當前生效,重啓後就會失效,接下來改爲永久生效
[root@redis ~]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
[root@redis ~]# chmod +x /etc/rc.d/rc.local

至此,reboot重啓服務器也好,只是重啓redis服務也好,都不會再報哪些warning問題了。如下:

2020-03-02_140453

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章