1. 程式人生 > 實用技巧 >Redis 搭建與配置

Redis 搭建與配置

Redis 簡介

Redis 是一款開源的,ANSI C 語言編寫的,高階鍵值(Key-Value)快取和支援永久儲存 NoSQL 資料庫產品,

Redis 採用記憶體(In-Memory)資料集(DataSet),

支援多種資料型別,

運行於大多數 POSIX 系統,如Linux、*BSD、OS X等。

Redis 就是非關係型資料庫(NOSQL)的一種,儲存方式是 Key:value

Redis 作用

會話保持(EXPIRE 設定過期時間)

資料快取(放在資料庫前面,memcache,mongodb)

訊息佇列(kafka),結合 ELK

Redis 優點

1.高速讀寫,將所有資料儲存在記憶體,單執行緒服務,使用 C 語言

2.部署簡單,使用穩定

3.資料型別豐富
- String: 字串型別
- Hash: 雜湊型別
- List: 列表型別
- Set: 集合型別
- Sorted set: 順序集合型別

4.支援持久化,將記憶體的資料寫入磁碟

5.多種記憶體分配及回收策略

6.支援事物、鎖

7.訊息佇列、訊息訂閱

8.支援高可用:哨兵模式

9.支援分散式分片叢集

10.支援的客戶端語言很多:Java,PHP,Python,Node.js,C 

Redis 下載

官方網站:https://redis.io/

下載網站:http://download.redis.io/releases/

幫助網站:http://redisdoc.com/

Redis & Memcached 資料快取對比

# Memcached:
1.優點:高效能讀寫、單一資料型別、支援客戶端式分散式叢集、一致性hash多核結構、多執行緒讀寫效能高。
2.缺點:無持久化、節點故障可能出現快取穿透、分散式需要客戶端實現、跨機房資料同步困難、架構擴容複雜度高

# Redis:
1.優點:高效能讀寫、多資料型別支援、資料持久化、高可用架構、支援自定義虛擬記憶體、支援分散式分片叢集、單執行緒讀寫效能極高
2.缺點:多執行緒讀寫較Memcached慢

# Tair:
1.優點:高效能讀寫、支援三種儲存引擎(ddb、rdb、ldb)、支援高可用、支援分散式分片叢集、支撐了幾乎所有淘寶業務的快取。
2.缺點:單機情況下,讀寫效能較其他兩種產品較慢

# 對比結論:
1.Memcached:多核的快取服務,更加適合於多使用者併發訪問次數(訪問次數較少的應用場景)。
2.Redis:單核快取服務,在單節點情況下,更加適合少量使用者,多次訪問的應用場景。

Redis 使用場景

  • 會話快取(Session Cache):將 Session 儲存在 Redis 中,用 Redis 快取會話相對於其他儲存(如 Memcached)的優勢是,Redis 提供了持久化 。

  • 資料快取:將後端(MySQL)儲存的持久化資料,快取到 Redis 中,加快查詢速度,降低 MySQL I/O 負荷 。

  • 排行榜 / 計數器:Redis 在記憶體中對數字進行遞增、遞減的操作十分方便,利用好集合(Set)和有序集合(Sort Set),這些操作非常簡單 。

  • 社交軟體:共同好友,共同愛好(通過集合實現)

  • 訊息佇列,結合 ELK 做日誌收集(通過列表實現)

Redis 搭建

下載原始碼包

[root@redis ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz

安裝依賴

[root@redis ~]# yum install -y gcc gcc-c++

解壓原始碼包

[root@redis ~]# tar xf redis-3.2.12.tar.gz 
[root@redis ~]# mv redis-3.2.12 /usr/local/
[root@redis ~]# ln -s /usr/local/redis-3.2.12 /usr/local/redis

編譯安裝

[root@redis ~]# cd /usr/local/redis
[root@redis redis]# make & make install

啟動 Redis

[root@redis redis]# ./src/redis-server &

[root@redis redis]# netstat -lntp  
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      11759/./src/redis-s

連線 Redis

如果編譯安裝步驟中,沒有安裝(make install),需要手動配置環境變數 。

# 配置環境變數
[root@redis redis]# vim /etc/profile.d/redis.sh
export PATH=/usr/local/redis/src:$PATH

# 客戶端連線
[root@redis redis]# redis-cli 
127.0.0.1:6379> 

關閉 Redis

[root@redis redis]# redis-cli shutdown
11759:M 03 Aug 10:20:20.535 # User requested shutdown...
11759:M 03 Aug 10:20:20.535 * Saving the final RDB snapshot before exiting.
11759:M 03 Aug 10:20:20.546 * DB saved on disk
11759:M 03 Aug 10:20:20.546 # Redis is now ready to exit, bye bye...
[1]+  Done                    ./src/redis-server


[root@redis redis]# redis-cli 
127.0.0.1:6379> shutdown
11851:M 03 Aug 10:20:59.580 # User requested shutdown...
11851:M 03 Aug 10:20:59.580 * Saving the final RDB snapshot before exiting.
11851:M 03 Aug 10:20:59.584 * DB saved on disk
11851:M 03 Aug 10:20:59.584 # Redis is now ready to exit, bye bye...
not connected> quit
[1]+  Done                    ./src/redis-server

Redis 配置

Redis 配置檔案

# 預設的配置檔案
[root@redis redis]# pwd
/usr/local/redis
[root@redis redis]# ll
-rw-rw-r--  1 root root 46695 Jun 13  2018 redis.conf

# 建立 redis 配置檔案目錄
[root@redis redis]# mkdir /service/redis/6379 -p

# 編寫配置檔案
[root@redis redis]# vim /service/redis/6379/redis.conf
bind 172.16.1.51 127.0.0.1					 	# 監聽地址
port 6379									    # 埠
daemonize no								    # 後臺啟動
pidfile /service/redis/6379/redis_6379.pid	  	# 指定pid檔案
loglevel notice								 	# 指定日誌級別
logfile /service/redis/6379/redis_6379.log	 	# 指定日誌檔案

指定配置檔案啟動

[root@redis redis]# redis-server /service/redis/6379/redis.conf