Redis 是當今非常流行的基於 KV 結構的作為Cache 使用的 NoSQL數據庫。
學習Redis最好的方法就是動手嘗試,在介紹Redis核心內容之前,本篇文章主要先來介紹一下Redis的安裝和使用,以及Redis的基礎知識。
開始之前,分享給大家這套視頻教程,在視頻中能了解NoSQL是什么,NoSQL和關系型數據庫的對比優缺點。掌握Redis是什么、能干什么、如何用;掌握Redis在Windows和Linux下的安裝配置、五大數據類型、常用操作命令、Redis持久化、主從復制、事務控制以及用Jedis操作進行Java開發等技術點!
在線觀看:https://www.bilibili.com/video/BV1Uz4y1X72A
資料下載:http://www.bjpowernode.com/javavideo/130.html
Redis 介紹
Remote Dictionary Server(Redis)是一個開源的使用C 語言編寫、支持網絡、可基於內存亦可持久化的 Key-Value 數據庫. Key 字符類型,其值(value)可以是字符串(String), 哈希(Map),列表(list), 集合(sets) 和有序集合(sorted sets)等類型,每種數據類型有自己的專屬命令。所以它通常也被稱為數據結構服務器。
Redis 的作者是 Antirez,來自意大利的西西里島,現在居住在卡塔尼亞。目前供職於Pivotal 公司(Pivotal 是 Spring 框架的開發團隊),Antirez 被稱為 Redis 之父。
Redis的代碼托管在GitHub上
https://github.com/antirez/redis,開發十分活躍,代碼量只有3萬多行。
官網:https://redis.io/
中文:http://www.redis.cn/
Window 上安裝 Redis
Windows 版本的 Redis 是 Microsoft 的開源部門提供的 Redis. 這個版本的 Redis 適合開發人員學習使用,生產環境中使用 Linux 系統上的 Redis
(1) 下載
官網:https://redis.io/
windows 版本:
https://github.com/MSOpenTech/redis/releases

(2) 安裝
下載的 Redis-x64-3.2.100.zip 解壓后,放到某個目錄(例如 d:\tools\),即可使用。目錄結構:

(3) 啟動
1. Windows7 系統雙擊 redis-server.exe 啟動 Redis

2. Windows 10 系統
有的機器雙擊 redis-server.exe 執行失敗,找不到配置文件,可以采用以下執行方式: 在命令行(cmd)中按如下方式執行:
D:\tools\Redis-x64-3.2.100>redis-server.exe redis.windows.conf
如圖:

(4) 關閉
按 ctrl+c 退出Redis 服務程序。
Linux 上安裝 Redis
(1) 安裝
1. 上傳 redis-4.0.13.tar.gz 到 linux 系統。使用 Xftp 工具

2. 解壓 redis-4.0.13.tar.gz 到/usr/local 目錄

3. 查看解壓后的文件
切換目錄 cd /usr/local
執行 ll

4. 安裝 gcc 編譯器
Redis 是使用 c 語言編寫的。使用源文件安裝方式,需要編譯 c 源文件,會使用 gcc 編譯器。
什么是 gcc ?
gcc 是 GNU compiler collection 的縮寫,它是 Linux 下一個編譯器集合(相當於 javac ),是c 或 c++程序的編譯器。
使用yum進行安裝gcc 。執行命令:yum -y install gcc

在解壓后的 Redis 目錄下執行(cd /usr/local/redis-4.0.13) make 命令。
5. 編譯 redis 源文件
1) 開始執行 make
cd /usr/local/redis-4.0.13 再執行 make
如果 make 命令執行過程中出現錯誤:
error: jemalloc/jemalloc.h: No such file or directory
解決方式執行 make MALLOC=libc
2)執行 make 成功的標志

3)查看make編譯結果,cd src目錄
cd src 在執行 ls

(2) 啟動 Redis
redis 安裝目錄下 redis.conf 是重要的配置文件,包含 redis 服務器的配置信息。啟動redis 需要指定配置文件路徑。
啟動方式:
①前台啟動 ./redis-server redis.conf 配置文件路徑
②后台啟動 ./redis-server redis.conf 配置文件路徑 &
第①種 前台啟動
啟動 Redis 的服務器端:切換到 src 目錄下執行redis-server 程序

或者使用全路徑

redis 應用以前台的方式啟動,不能退出當前窗口,退出窗口,應用終止。
在其他窗口查看redis 啟動的進程

第②種 后台啟動
src目錄下執行 ./redis-server redis.conf配置文件路徑 &
此時關閉窗口,查看redis進程,依然存在。

查看redis進程

(3) 關閉 Redis
關閉方式:
①使用 redis 客戶端關閉,向服務器發出關閉命令
切換到 redis-4.0.13/src/ 目錄,執行 ./redis-cli shutdown
推薦使用這種方式, redis 先完成數據操作,然后再關閉。
例如:

②kill pid 或者 kill -9 pid
這種不會考慮當前應用是否有數據正在執行操作,直接就關閉應用。先使用 ps -ef | grep redis 查出進程號,在使用 kill pid

Redis 客戶端
Redis 客戶端是一個程序,通過網絡連接到 Redis 服務器,在客戶端軟件中使用 Redis 可
以識別的命令,向 Redis 服務器發送命令,告訴 Redis 想要做什么。Redis 把處理結果顯示在客戶端界面上。通過 Redis 客戶端和 Redis 服務器交互。
Redis 客戶端發送命令,同時顯示 Redis 服務器的處理結果在。
redis 命令行客戶端:
redis-cli(Redis Command Line Interface)是 Redis 自帶的基於命令行的Redis 客戶端,用於與服務端交互,我們可以使用該客戶端來執行redis 的各種命令。
兩種常用的連接方式:
1. 直接連接 redis (默認 ip127.0.0.1,端口 6379):./redis-cli
在 redis 安裝目錄/src,執行 ./redis-cli
此命令是連接本機 127.0.0.1 ,端口 6379 的 redis
2. 指定 IP 和端口連接 redis:./redis-cli -h 127.0.0.1 -p 6379
-h redis 主機 IP(可以指定任意的 redis 服務器)
-p 端口號(不同的端口表示不同的redis 應用)
在 redis 安裝目錄/src,執行 ./redis-cli -h 127.0.0.1 -p 6379
例 1:

redis 遠程客戶端
Redis Desktop Manager:C++ 編寫,響應迅速,性能好。官網地址:https://redisdesktop.com/

點擊“DOWNLOAD”

1. 安裝客戶端軟件
在 Windows 系統使用此工具,連接 Linux 上或 Windows 上的 Redis , 雙擊此exe 文件執行安裝

安裝后啟動界面:

使用客戶端連接 Linux 的 Redis
連接Linux的Reids之前需要修改Redis服務器的配置信息。 Redis服務器有安全保護措施,默認只有本機(安裝Redis的那台機器)能夠訪問。配置信息存放在Redis安裝目錄下的redis.conf文件。修改此文件的兩個設置。
遠程連接redis需要修改redis主目錄下的redis.conf配置文件:
①. bind ip 綁定ip此行注釋
②. protected-mode yes 保護模式改為 no
使用vim 命令修改redis.conf 文件,修改文件前備份此文件,執行 cp 命令

執行 vim redis.conf

3. 使用 redis.conf 啟動 Redis
修改配置文件后,需要使用配置文件重新啟動 Reids,默認不加載配置文件。先關閉已經啟
動的 Redis ,使用以下命令啟動 Redis 在 Redis 安裝目錄執行:
./redis-server ../redis.conf &

4. 關閉 Linux 系統的防火牆
linux 系統,命令行執行:systemctl stop firewalld
5. 配置 Redis Desktop Manamager(RDM),連接 Redis
在 RDM 的主窗口,點擊左下的“Connect to Redis Server”

連接成功后:

redis 編程客戶端
Jedis
redis 的 Java 編程客戶端,Redis 官方首選推薦使用 Jedis,jedis 是一個很小但很健全的
redis 的 java 客戶端。通過Jedis 可以像使用 Redis 命令行一樣使用Redis。
- jedis 完全兼容redis 2.8.x and 3.x.x
- Jedis 源碼:https://github.com/xetorthio/jedis
- api 文檔:http://xetorthio.github.io/jedis/
redis 的其他編程語言客戶端:
C 、C++ 、C# 、Erlang、Lua 、Objective-C、Perl 、PHP 、Python 、Ruby、Scala 、Go 等 40 多種語言都有連接redis 的編程客戶端
Redis 基本操作命令
redis 默認為 16 個庫 (在redis.conf 文件可配置,該文件很重要,后續很多操作都是這個配置文件) redis 默認自動使用 0 號庫
(1) 溝通命令,查看狀態
redis >ping 返回 PONG
解釋:輸入 ping,redis 給我們返回 PONG,表示 redis 服務運行正常

(2) 查看當前數據庫中 key 的數目:dbsize
語法:dbsize
作用:返回當前數據庫的 key 的數量。返回值:數字,key 的數量
例:先查索引 5 的 key 個數, 再查 0 庫的 key 個數

(3) redis 默認使用 16 個庫
Redis默認使用16個庫,從0到15。 對數據庫個數的修改,在redis.conf 文件中databases 16

(4) 切換庫命令:select db
使用其他數據庫,命令是 select index
例 1: select 5

(5) 刪除當前庫的數據:flushdb

(6) redis 自帶的客戶端退出當前 redis 連接:exit 或 quit

Redis 的Key 的操作命令
1. keys
語法:keys pattern
作用:查找所有符合模式 pattern 的 key. pattern 可以使用通配符。通配符:
- *:表示 0-多個字符,例如:keys * 查詢所有的 key。
- ?:表示單個字符,例如:wo?d , 匹配 word , wood
例 1:顯示所有的 key

例 2:使用 *表示 0 或多個字符

例 3:使用?表示單個字符

2. exists
語法:exists key [key…]
作用:判斷key 是否存在
返回值:整數,存在 key 返回 1,其他返回 0.使用多個 key,返回存在的key 的數量。
例 1:檢查指定 key 是否存在

例 2:檢查多個 key

3. expire
語法:expire key seconds
作用:設置key 的生存時間,超過時間,key 自動刪除。單位是秒。返回值:設置成功返回數字 1,其他情況是 0 。
例 1:設置紅燈的倒計時是 5 秒

4. ttl
語法:ttl key
作用:以秒為單位,返回 key 的剩余生存時間(ttl: time to live) 返回值:
- -1 :沒有設置 key 的生存時間, key 永不過期。
- -2:key 不存在
- 數字:key 的剩余時間,秒為單位
例 1:設置 redlight 的過期時間是 10,查看剩余時間

5. type
語法:type key
作用:查看key 所存儲值的數據類型返回值:字符串表示的數據類型
- none (key 不存在)
- string (字符串)
- list (列表)
- set (集合)
- zset (有序集)
- hash (哈希表)
例 1:查看存儲字符串的 key:wood

例 2:查看不存在的key

6. del
語法:del key [key…]
作用:刪除存在的key,不存在的key 忽略。返回值:數字,刪除的 key 的數量。
例 1:刪除指定的 key
