之前筆者常常接觸的資料庫是關係型資料庫,其中MySQL接觸居多。近年來NoSQL興起,各種新型資料庫不斷誕生,redis就是NoSQL中的一種熱門資料庫。 註:此類文章僅僅作為筆者的學習和閱讀積累,若有出錯之處,敬請諒解。 一、redis的數據類型 對於redis資料庫的介紹,這裡就不說了,大家可自 ...
之前筆者常常接觸的資料庫是關係型資料庫,其中MySQL接觸居多。近年來NoSQL興起,各種新型資料庫不斷誕生,redis就是NoSQL中的一種熱門資料庫。 註:此類文章僅僅作為筆者的學習和閱讀積累,若有出錯之處,敬請諒解。
一、redis的數據類型
對於redis資料庫的介紹,這裡就不說了,大家可自行百度,簡單來說redis就是以“鍵值對”形式存儲數據的資料庫。首先作為一種資料庫,對於存儲的數據,其必然存在相應的數據存儲類型定義,筆者先從redis的存儲數據類型說起。 redis資料庫存在5種數據類型,分別為:字元串(String)、列表(list)、集合(set)、散列(hash)、有序集合(zset)。(1)字元串
字元串在redis甚至在各大資料庫中,都作為最基本的數據類型,可存儲的值包括字元串、整數或者浮點數。 redis操作字元串數據常用命令:命令 | 說明 | 基礎用法 |
set | 設置存儲給定鍵的值 | set [key] [value] |
get | 獲取給定鍵的值 | get [key] |
del | 刪除給定鍵的值 | del [key] |
(2)列表
可將redis的列表看作一種“雙向隊列”,該數據結構允許在其前後兩端添加/刪除元素。 redis操作列表數據常用命令:命令 | 說明 | 基礎用法 |
lpush | 將給定值插入列表前端 | lpush [key] [value] |
lpop | 從列表前端彈出並返回一個值 | lpop [key] |
rpush | 將給定值插入列表後端 | rpush [key] [value] |
rpop | 從列表後端彈出並返回一個值 | rpop [key] |
lindex | 獲取列表給定索引上的單個元素值 | lindex [key] [index] |
lrange | 獲取列表給定範圍中的所有元素值 | lrange [key] [startIndex] [endIndex] |
(3)集合
redis和集合和列表都可存儲多個字元串,區別在於列表可存儲多個相同的字元串,而集合保證存儲的元素的唯一性。集合存儲元素的方式是無序的。 redis操作集合數據常用命令:命令 | 說明 | 基礎用法 |
sadd | 將給定元素添加進集合中 | sadd [key] [value] |
srem | 刪除集合中的給定元素 | srem [key] [value] |
sismember | 檢查給定元素是否存在於集合中 | sismember [key] [value] |
smembers | 返回集合中的所有元素 | smembers [key] |
(4)散列
redis的散列的值可以存儲多個鍵值對的映射,鍵無序且不可重覆。 redis操作散列數據常用命令:命令 | 說明 | 基礎用法 |
hset | 將給定的鍵值對添加到散列中 | hset [key] [field] [value] |
hget | 獲取指定散列鍵的值 | hget [key] [field] |
hdel | 刪除散列中指定的鍵(連帶值) | hdel [key] [field] |
hgetall | 獲取散列中的所有鍵值對 | hgetall [key] |
(5)有序集合
有序集合和散列一樣用於存儲鍵值對信息,鍵和散列的要求一樣,不同的是有序集合的值被稱為“分值(score)”,分值必須是浮點數。有序集合既可以根據鍵訪問成員,也可以根據分值來訪問成員。有序集合的鍵值對按照分值大小進行排序。 redis操作有序集合數據常用命令:命令 | 說明 | 基礎用法 |
zadd | 將給定鍵值對添加到集合中 | zadd [key] [score] [field] |
zrem | 刪除集合中指定的鍵(連帶值) | zrem [key] [field] |
zrange | 獲取集合中指定索引範圍的鍵值對 | zrange [key] [startIndex] [endIndex](可選“withscores”參數輸出分值) |
zrangebyscore | 獲取集合中指定分值範圍的鍵值對 | zrangebyscore [key] [minScore] [maxScore] |