本系列教程內容提要
Java工程師之Redis實戰系列教程教程是一個學習教程,是關於Java工程師的Redis知識的實戰系列教程,本系列教程均以解決特定問題為目標,使用Redis快速解決在實際生產中的相關問題,為了更方便的與大家一起探討與學習,每個章節均提供盡可能詳細的示例源碼及注釋,所有示例源碼均可在javacourse-redis-in-action找到相關幫助!
本章目標:
- 什么是Redis
- Redis數據結構
- Redis常用命令
什么是Redis
Redis是一個功能強大的非關系型內存數據庫(或者說內存數據結構)服務器,開源軟件;

Redis數據結構
Redis有五種存儲鍵與不同數據結結構類型之間的映射,分別是STRING(字符串),LIST(列表),SET(集合),HASH(散列),ZSET(有序集合),熟練運用這五種數據結構才是掌握Redis的核心所在,不可輕視。
| 數據結構 | 存儲值 | 讀寫能力 |
|---|---|---|
| STRING | 字符串,整數,浮點數 | 對字符串或部分進行操作;對整數和浮點數執行自增或者自減操作 |
| LIST | 鏈表(每個節點都包含一個字符串) | 鏈表的推入,彈出;鏈表的修建;取值;查值;移除; |
| SET | 包含字符串的無序收集器,不可重復 | 添加;獲取;移除;檢查存在;計算交集,並集,差集;隨機取值; |
| ZSET | 字符串成員與浮點數分值之間的有序映射,元素的排序由分值決定 | 添加;獲取;移除; |
| HASH | 包含鍵值對的無序散列表 | 添加;獲取;移除; |
Redis常用命令
針對Redis的五種數據結構有如下常用命令。當然,Redis官網提供了更為全面的命令 https://redis.io/commands# http://redisdoc.com/
STRING
| 基本命令 | 說明 |
|---|---|
| SET | 設置存儲在給定鍵中的值 |
| GET | 獲取存儲在給定鍵中的值 |
| DEL | 刪除存儲在給定鍵中的值 |
| 數值命令 | 說明 |
|---|---|
| INCR | 將鍵存儲的值加上1 |
| DECR | 將鍵存儲的值減去1 |
| INCRBY | 將鍵存儲的值加上Count |
| DECRBY | 將鍵存儲的值減去Count |
| INCRBYFLOAT | 將鍵存儲的值加上浮點數Float |
| 操作命令 | 說明 |
|---|---|
| APPEND | 將VALUE值追加到給定鍵的值的末尾 |
| GETRANGE | 獲取偏移量start到end范圍內的所有字符組成的子串 |
| SETRANGE | 將偏移量strat到end的字串設置為給定值 |
| GETBIT | 獲取偏移量為offset的二進位值 |
| SETBIT | 設置偏移量為offset的二進位值 |
| BITCOUNT | 統計二進制位串值為1的數量 |
| BITOP | 對一個或者多個二進制位串執行AND,OR,XOR,NOT任意一種運算操作,存在dest-key中 |

LIST
| 基本操作 | 說明 |
|---|---|
| PRUSH | 將給定值推入到列表的右端 |
| LPUSH | 將給定值推入到列表的左端 |
| LPOP | 將列表的左端推出一個值 |
| RPOP | 將列表的右端推出一個值 |
| LINDEX | 獲取列表給定位置元素 |
| LRANGE | 返回列表從start到end偏移量在內的所有元素 |
| LTRIM | 保留偏移量start到end內的元素 |
| 高級操作 | 說明 |
|---|---|
| BLPOP | 從第一個非空列表中彈出最左側元素,或者在timeout之內阻塞等待元素出現 |
| BRPOP | 從第一個非空列表中彈出最右側元素,或者在timeout之內阻塞等待元素出現 |
| RPOPLPUSH | 從第一個列表中彈出右端元素,推入第二列表的左端,返回此元素 |
| BRPOPLPUSH | 從第一個列表中彈出右端元素,推入第二列表的左端,返回此元素,如果沒有值,阻塞等待出現 |

SET
| 命令 | 說明 |
|---|---|
| SADD | 將給定元素添加到集合 |
| SREM | 如果給定元素存在集合,則刪除 |
| SISMEMBER | 檢查元素是否存在集合中 |
| SCARD | 返回集合包含的元素的數量 |
| SMEMBERS | 返回集合包含的所有元素 |
| SRANDMEMBER | 從集合中隨機返回一個或者多個元素 |
| SPOP | 隨機從集合中移除一個元素,並返回這個元素 |
| SMOVE | 如果這個集合包含key,那么移除,將移除元素添加到dest-key中 |
| 按位運算符命令 | 說明 |
|---|---|
| SDIF | 計算差集 |
| SDIFFSTORE | 計算差集,並存儲到dest-key |
| SINTER | 計算交集 |
| SINTERSTORE | 計算交集,並存儲到dest-key |
| SUNION | 計算交集 |
| SUNIONSTORE | 計算交集,並存儲到dest |

ZSET
| 命令 | 說明 |
|---|---|
| ZADD | 將一個帶有給定分值的成員添加到有序集合中 |
| ZREM | 如果給定成員存在有序集合中,則移除 |
| ZCARD | 返回有序集合的數量 |
| ZINCRBY | 將member成員的分值加上count |
| ZRANK | 返回成員member的在有序集合的排名 |
| ZCOUNT | 返回分值在min和max之間的成員數量 |
| ZRANGEBYSCORE | 獲取有序集合在給定分值范圍內的所有元素 |
| ZRANGE | 根據元素在有序集合中的位置,從有序集合中取出多個元素,如果給定[WITHSCORES]則返回分值 |
| 高級命令 | 說明 |
|---|---|
| ZINTERSTORE | 對給定的有序集合執行類似集合的交集運算 |
| ZUNIONSTORE | 對給定的有序集合執行類似集合的並集運算 |

HASH
| 命令 | 說明 |
|---|---|
| HSET | 在散列中關聯給定的鍵值對 |
| HGET | 獲取指定散列鍵的值 |
| HDEL | 如果給定鍵在散列里面,移除 |
| HGETALL | 獲取散列包含的所有鍵值對 |
| 高級命令 | 說明 |
|---|---|
| HEXISTS | 檢查給定鍵是否存在散列中 |
| HKEYS | 獲取散列包含的鍵 |
| HVALS | 獲取散列包含的值 |
| HINCRBY | 將鍵Key存儲的值加上count |
| HINCRBYFLOAT | 將鍵Key存儲的值加上浮點數count |
| HGETALL | 獲取散列包含的所有鍵值對 |

其他命令
| 事務命令 | 說明 |
|---|---|
| MULTI | 開啟事務 |
| EXEC | 提交事務 |
| 排序命令 | 說明 |
|---|---|
| SORT | 根據給定的選項,對輸入的列表,集合或者有序集合進行排序,然后返回或則存儲排序結果 |
| 鍵的過期 | 說明 |
|---|---|
| EXEPIRE | 給定鍵指定多少秒后過期 |
| TTL | 查看鍵還有多少秒過期 |
| PERSIST | 移除鍵的過期時間 |
| EXPIREAT | 將過期時間設置為給定的UNIX時間戳 |
| PTTL | 查看鍵還有多少毫秒過期 |
| PEXPIRE | 讓給定鍵指定多少毫秒后過期 |
| PEXPIREAT | 將過期時間(毫秒精度)設置為給定的UNIX時間戳 |
