天天看點

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、下載下傳并解壓

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

2、準備工作目錄及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   
#過濾注釋及空行以便生成新的配置檔案           

3、修改配置檔案

[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           

4、啟動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.171.134 -p 6379   #若遠端登入,則需要指定IP及端口
192.168.171.134:6379>            

5、檢視redis日志,解決warning問題

[root@redis bin]# cat /usr/local/redis/data/redis.log   #檢視redis日志           

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

Redis 5.0部署

接下來就解決這些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           
[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           
[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