1. redis簡介
redis(Remote Dictionary Server)是一個開源的由Salvatore Sanfilippo使用ANSI C語言編寫的基於key-value數據存儲服務器。
其值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型,所以通常被稱爲數據結構服務器。
redis屬於NoSQL數據庫,NoSQL數據庫叫非關係型數據庫。
1.1 redis特點
- redis足夠簡單和穩定
- 支持豐富的數據結構
- 內存存儲讀寫性能優秀
- 提供持久化的支持
- 支持部分事務操作
2. redis安裝
2.1 redis下載安裝
#下載
[root@CentOS7 ~]# wget http://download.redis.io/releases/redis-5.0.5.tar.gz
#解壓
[root@CentOS7 ~]# tar zxvf redis-5.0.5.tar.gz -C /usr/local/
[root@CentOS7 ~]# cd /usr/local/redis-5.0.5/
#編譯
[root@CentOS7 redis-5.0.5]# make -j 4
#將src下的可執行文件複製到/usr/local/bin目錄下(可不執行)
[root@CentOS7 redis-5.0.5]# make install
2.2 redis啓動與關閉
1. 加&設置爲後臺啓動redis服務
#後臺啓動redis服務
[root@CentOS7 redis-5.0.5]# cd src/
[root@CentOS7 src]# ./redis-server &
#後臺啓動並輸出日誌到nohup.out文件
[root@CentOS7 src]# nohup /usr/local/redis-5.0.5/src/redis-server &
[root@CentOS7 src]# ll -h nohup.out
-rw-------. 1 root root 3.2K 9月 5 20:23 nohup.out
2. 修改redis.conf配置文件,將daemonize no改爲daemonize yes,啓用後端模式。
[root@CentOS7 src]# sed -i 's/daemonize no/daemonize yes/' /usr/local/redis-5.0.5/redis.conf
[root@CentOS7 src]# ./redis-server ../redis.conf
26084:C 06 Sep 2019 00:05:27.371 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
26084:C 06 Sep 2019 00:05:27.371 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=26084, just started
26084:C 06 Sep 2019 00:05:27.371 # Configuration loaded
3. redis服務的關閉
#正常關閉,數據保存
[root@CentOS7 src]# ./redis-cli shutdown
#硬性關閉,可能造成數據丟失($括號中的數據爲獲取redis服務端的pid)
[root@CentOS7 src]# kill -9 $(ps -ef | grep redis | grep -v grep | awk '{print $2}')
3. redis客戶端
3.1 redis命令行客戶端
redis-cli(Redis Command Line Interface)是Redis自帶的基於命令行的Redis客戶端,用於與服務器交互,可以使用該客戶端來執行Redis的各種命令。
直接連接Redis(默認IP127.0.0.1,端口6379)
[root@CentOS7 src]# ./redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
指定IP和端口連接redis
[root@CentOS7 src]# ./redis-cli -h 127.0.0.1 -p 6379
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
3.2 redis遠程客戶端
1.Redis Desktop Manager
注意:連接Redis需要修改Redis主目錄下的redis.conf配置文件:bind ip綁定IP註釋掉;protected-mode yes保護模式改爲no;
[root@CentOS7 redis-5.0.5]# vim redis.conf
69 #bind 127.0.0.1
88 protected-mode no
2.phpRedisAdmin
web控制檯,需要本地安裝php運行環境。
3.3 redis編程客戶端
redis以鍵值對的方式存儲數據在服務器上,有人編寫了一套程序,專門去連接redis並讀取其中的鍵值對內容,這套程序就像驅動程序一樣,我們使用它提供的API就能訪問服務器上的redis並對它進行各種操作。
redis的java編程客戶端
1.Jedis:redis的java編程客戶端,redis官方首選推薦使用redis,jedis是一個很小但很健全的java客戶端。
2.Lettuce:是一個可伸縮線程安全的java客戶端。多個線程可以共享同一個redis連接。它利用優秀netty NIO框架來高效地管理多個連接。
4. redis入門
redis默認爲16個數據庫(在redis.conf文件中可配置)。
redis默認使用0號庫。
4.1 redis常用命令
[root@CentOS7 src]# ./redis-cli
#輸入ping,redis返回PONG,表示redis服務運行正常
127.0.0.1:6379> ping
PONG
切換庫命令:select db
刪除所有庫的數據:flushall
刪除當前庫的數據:flushdb
獲取redis的所有配置值:config get *
退出當前客戶端:exit/quit
查看當前數據庫中key的數目:dbsize
查看redis服務器的統計信息:info
5. redis安全
5.1 設置密碼
設置redis密碼,在redis.conf文件配置requirepass 123456.
注意:因爲redis速度相當快,所以在一臺比較好的服務器下,一個外部的用戶可以在一秒種進行150K次的密碼嘗試,這意味着需要指定非常強大的密碼來防止暴力破解。
客戶端連接則需要密碼:auth 123456或者redis-cli -h 127.0.0.1 -p 6379 -a 123456
[root@CentOS7 src]# sed -i 's/# requirepass foobared/12345/' ../redis.conf
5.2 綁定IP
把#bind 127.0.0.1前面的註釋去掉,然後把127.0.0.1改成允許訪問的redis服務器的IP,表示只允許該IP訪問
[root@CentOS7 src]# sed -i 's/# bind 127.0.0.1/bind 127.0.0.1/' ../redis.conf
5.3 命令禁止或重命名
在redis.conf文件種進行命令禁止或重命名配置
rename-command flushall b840fc02d524045429941cc15f59e41cb7be6c52 #重命令fulshall命令。需保證appendonly.aof文件沒有flushall命令,否則服務器無法啓動
rename-command flushall #禁用flushall命令
rename-command flushdb #禁用flushdb命令
rename-command config b840fc02d524045429941cc15f59e41cb7be6c52 #重命名config命名
rename-command config #禁用config命令
5.4 修改默認端口
redis默認端口號爲6379,可修改配置文件更改其默認端口號。
[root@CentOS7 src]# sed -i 's/port 6379/port 8888/' ../redis.conf