Redis 五種資料型別和相關操作命令
REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value儲存系統。
Redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。它通常被稱為資料結構伺服器,因為值(value)可以是 字串(Strings), 雜湊(HashMaps), 列表(lists), 集合(sets) 和 有序集合(sorted sets)等型別。
Redis支援五種資料型別:string、hash、list、set和zset(sorted set)。
string(字串)
String是Redis最基本的型別,一個key對應一個value。同時string型別是二進位制安全的,即redis的spring型別可以包含任何資料。比如檔案圖片資料或序列化的物件。String型別最大可以儲存512MB。
redis 127.0.0.1:6379> SET name "TestStr"
OK
redis 127.0.0.1:6379> GET name
"TestStr"
Redis 字串(String) 命令
命令 | 描述 |
設定指定 key 的值 | |
獲取指定 key 的值。 | |
返回 key 中字串值的子字元 | |
將給定 key 的值設為 value ,並返回 key 的舊值(old value)。 | |
對 key 所儲存的字串值,獲取指定偏移量上的位(bit)。 | |
獲取所有(一個或多個)給定 key 的值。 | |
對 key 所儲存的字串值,設定或清除指定偏移量上的位(bit)。 | |
將值 value 關聯到 key ,並將 key 的過期時間設為 seconds (以秒為單位)。 | |
只有在 key 不存在時設定 key 的值。 | |
用 value 引數覆寫給定 key 所儲存的字串值,從偏移量 offset 開始。 | |
返回 key 所儲存的字串值的長度。 | |
同時設定一個或多個 key-value 對。 | |
同時設定一個或多個 key-value 對,當且僅當所有給定 key 都不存在。 | |
這個命令和 SETEX 命令相似,但它以毫秒為單位設定 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位。 | |
將 key 中儲存的數字值增一。 | |
將 key 所儲存的值加上給定的增量值(increment) 。 | |
將 key 所儲存的值加上給定的浮點增量值(increment) 。 | |
將 key 中儲存的數字值減一。 | |
key 所儲存的值減去給定的減量值(decrement) 。 | |
如果 key 已經存在並且是一個字串, APPEND 命令將 value 追加到 key 原來的值的末尾。 |
hash(雜湊)
Redis的hash資料型別是一個鍵值對集合,hash是一個string型別的field和value的對映表,hash特別適合用於儲存物件。每個hash可以儲存232-1 鍵值對(40多億)。
redis> HMSET myhash field1 "Hello" field2 "World"
"OK"
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
Redis 雜湊(Hash) 命令
命令 | 描述 |
刪除一個或多個雜湊表欄位 | |
檢視雜湊表 key 中,指定的欄位是否存在。 | |
獲取儲存在雜湊表中指定欄位的值/td> | |
獲取在雜湊表中指定 key 的所有欄位和值 | |
為雜湊表 key 中的指定欄位的整數值加上增量 increment 。 | |
為雜湊表 key 中的指定欄位的浮點數值加上增量 increment 。 | |
獲取所有雜湊表中的欄位 | |
獲取雜湊表中欄位的數量 | |
獲取所有給定欄位的值 | |
同時將多個 field-value (域-值)對設定到雜湊表 key 中。 | |
將雜湊表 key 中的欄位 field 的值設為 value 。 | |
只有在欄位 field 不存在時,設定雜湊表欄位的值。 | |
獲取雜湊表中所有值 |
list(列表)
Redis的list資料型別是簡單的字串列表,按照插入順序排序。你可以新增一個元素導列表的頭部(左邊)或者尾部(右邊)。List資料型別最多可儲存 232- 1 元素 (4294967295, 每個列表可儲存40多億)。
redis 127.0.0.1:6379> lpush mylist redis1
(integer) 1
redis 127.0.0.1:6379> lpush mylist redis2
(integer) 2
redis 127.0.0.1:6379> lpush mylist redis3
(integer) 3
redis 127.0.0.1:6379> lrange mylist 0 10
1) "redis1"
2) "redis2"
3) "redis3"
redis 127.0.0.1:6379>
Redis 列表(List) 命令
命令 | 描述 |
移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 | |
移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 | |
從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 | |
通過索引獲取列表中的元素 | |
在列表的元素前或者後插入元素 | |
獲取列表長度 | |
移出並獲取列表的第一個元素 | |
將一個或多個值插入到列表頭部 | |
將一個或多個值插入到已存在的列表頭部 | |
獲取列表指定範圍內的元素 | |
移除列表元素 | |
通過索引設定列表元素的值 | |
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。 | |
移除並獲取列表最後一個元素 | |
移除列表的最後一個元素,並將該元素新增到另一個列表並返回 | |
在列表中新增一個或多個值 | |
為已存在的列表新增值 |
set(集合)
Redis的Set資料型別是string型別的無序集合。Set資料型別是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是O(1)。新增一個string元素到,key對應的set集合中,成功返回1,如果元素已存在於集合中返回0,key對應的set不存在返回錯誤。List資料型別中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)。
redis 127.0.0.1:6379> sadd myset redis1
(integer) 1
redis 127.0.0.1:6379> sadd myset redis2
(integer) 1
redis 127.0.0.1:6379> sadd myset redis3
(integer) 1
redis 127.0.0.1:6379> sadd myset redis1
(integer) 0
redis 127.0.0.1:6379> smembers myset
1) "redis1"
2) "redis2"
3) "redis3"
Redis 集合(Set) 命令
命令 | 描述 |
向集合新增一個或多個成員 | |
獲取集合的成員數 | |
返回給定所有集合的差集 | |
返回給定所有集合的差集並儲存在 destination 中 | |
返回給定所有集合的交集 | |
返回給定所有集合的交集並儲存在 destination 中 | |
判斷 member 元素是否是集合 key 的成員 | |
返回集合中的所有成員 | |
將 member 元素從 source 集合移動到 destination 集合 | |
移除並返回集合中的一個隨機元素 | |
返回集合中一個或多個隨機數 | |
移除集合中一個或多個成員 | |
返回所有給定集合的並集 | |
所有給定集合的並集儲存在 destination 集合中 | |
迭代集合中的元素 |
zset(sortedset:有序集合)
Redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。
redis 127.0.0.1:6379> zadd myzset 0 redis1
(integer) 1
redis 127.0.0.1:6379> zadd myzset 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd myzset 0 redis2
(integer) 1
redis 127.0.0.1:6379> zadd myzset 0 redis2
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
1) "redis"
2) "redis1"
3) "redis2"
Redis 有序集合(sorted set) 命令
命令 | 描述 |
向有序集合新增一個或多個成員,或者更新已存在成員的分數 | |
獲取有序集合的成員數 | |
計算在有序集合中指定區間分數的成員數 | |
有序集合中對指定成員的分數加上增量 increment | |
計算給定的一個或多個有序集的交集並將結果集儲存在新的有序集合 key 中 | |
在有序集合中計算指定字典區間內成員數量 | |
通過索引區間返回有序集合成指定區間內的成員 | |
通過字典區間返回有序集合的成員 | |
通過分數返回有序集合指定區間內的成員 | |
返回有序集合中指定成員的索引 | |
移除有序集合中的一個或多個成員 | |
移除有序集合中給定的字典區間的所有成員 | |
移除有序集合中給定的排名區間的所有成員 | |
移除有序集合中給定的分數區間的所有成員 | |
返回有序集中指定區間內的成員,通過索引,分數從高到底 | |
返回有序集中指定分數區間內的成員,分數從高到低排序 | |
返回有序集合中指定成員的排名,有序整合員按分數值遞減(從大到小)排序 | |
返回有序集中,成員的分數值 | |
計算給定的一個或多個有序集的並集,並儲存在新的 key 中 | |
迭代有序集合中的元素(包括元素成員和元素分值) |
Redis HyperLogLog 命令
命令 | 描述 |
新增指定元素到 HyperLogLog 中。 | |
返回給定 HyperLogLog 的基數估算值。 | |
將多個 HyperLogLog 合併為一個 HyperLogLog |
Redis 釋出訂閱命令
命令 | 描述 |
訂閱一個或多個符合給定模式的頻道。 | |
檢視訂閱與釋出系統狀態。 | |
將資訊傳送到指定的頻道。 | |
退訂所有給定模式的頻道。 | |
訂閱給定的一個或多個頻道的資訊。 | |
指退訂給定的頻道。 |
Redis 事務命令
命令 | 描述 |
取消事務,放棄執行事務塊內的所有命令。 | |
執行所有事務塊內的命令。 | |
標記一個事務塊的開始。 | |
取消 WATCH 命令對所有 key 的監視。 | |
監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麼事務將被打斷。 |
Redis 指令碼命令
命令 | 描述 |
執行 Lua 指令碼。 | |
執行 Lua 指令碼。 | |
檢視指定的指令碼是否已經被儲存在快取當中。 | |
從指令碼快取中移除所有指令碼。 | |
殺死當前正在執行的 Lua 指令碼。 | |
將指令碼 script 新增到指令碼快取中,但並不立即執行這個指令碼。 |
Redis 連線命令
命令 | 描述 |
驗證密碼是否正確 | |
列印字串 | |
檢視服務是否執行 | |
關閉當前連線 | |
切換到指定的資料庫 |
Redis 伺服器命令
命令 | 描述 |
非同步執行一個 AOF(AppendOnly File) 檔案重寫操作 | |
在後臺非同步儲存當前資料庫的資料到磁碟 | |
關閉客戶端連線 | |
獲取連線到伺服器的客戶端連線列表 | |
獲取連線的名稱 | |
在指定時間內終止執行來自客戶端的命令 | |
設定當前連線的名稱 | |
獲取叢集節點的對映陣列 | |
獲取 Redis 命令詳情陣列 | |
獲取 Redis 命令總數 | |
獲取給定命令的所有鍵 | |
返回當前伺服器時間 | |
獲取指定 Redis 命令描述的陣列 | |
獲取指定配置引數的值 | |
對啟動 Redis 伺服器時所指定的 redis.conf 配置檔案進行改寫 | |
修改 redis 配置引數,無需重啟 | |
重置 INFO 命令中的某些統計資料 | |
返回當前資料庫的 key 的數量 | |
獲取 key 的除錯資訊 | |
讓 Redis 服務崩潰 | |
刪除所有資料庫的所有key | |
刪除當前資料庫的所有key | |
獲取 Redis 伺服器的各種資訊和統計數值 | |
返回最近一次 Redis 成功將資料儲存到磁碟上的時間,以 UNIX 時間戳格式表示 | |
實時列印出 Redis 伺服器接收到的命令,除錯用 | |
返回主從例項所屬的角色 | |
非同步儲存資料到硬碟 | |
非同步儲存資料到硬碟,並關閉伺服器 | |
將當前伺服器轉變為指定伺服器的從屬伺服器(slave server) | |
管理 redis 的慢日誌 | |
用於複製功能(replication)的內部命令 |
Redis 地理位置(geo) 命令
命令 | 描述 |
將指定的地理空間位置(緯度、經度、名稱)新增到指定的key中 | |
返回兩個給定位置之間的距離 | |
返回一個或多個位置元素的 Geohash 表示 | |
從key裡返回所有給定位置元素的位置(經度和緯度) | |
以給定的經緯度為中心, 找出某一半徑內的元素 | |
找出位於指定範圍內的元素,中心點是由給定的位置元素決定 |
相關文章
- 資料庫的連線、索引和Redis的五種資料型別及其操作命令、使用場景資料庫索引Redis資料型別
- redis的五大資料型別和相關語法的使用Redis大資料資料型別
- redis 五種資料型別和使用場景梳理!Redis資料型別
- 《閒扯Redis九》Redis五種資料型別之Set型Redis資料型別
- 《閒扯Redis六》Redis五種資料型別之Hash型Redis資料型別
- Redis 基本資料型別(Set) 的操作命令Redis資料型別
- 常用php操作redis命令整理(五)ZSET型別PHPRedis型別
- Redis五種資料型別應用場景Redis資料型別
- redis常用資料型別操作命令集錦Redis資料型別
- Redis 資料型別及操作Redis資料型別
- Redis資料型別基本操作Redis資料型別
- c# 操作Redis的五種基本型別總結C#Redis型別
- redis的五種資料型別及應用場景Redis資料型別
- Redis-第五章節-8種資料型別Redis資料型別
- redis-資料型別及命令Redis資料型別
- Redis 三種特殊資料型別Redis資料型別
- 【Redis】Redis的資料型別速查(5種基礎型別,5特殊型別)Redis資料型別
- Redis基本資料型別命令彙總Redis資料型別
- 細談Redis五大資料型別Redis大資料資料型別
- redis部署以及各種資料型別使用命令等詳解Redis資料型別
- [Redis] 淺談Redis內的幾種資料型別Redis資料型別
- [Redis 系列]redis 學習五,多學習一些 redis 的三種特殊資料型別Redis資料型別
- Redis 資料型別及常用命令Redis資料型別
- Redis 中三種特殊的資料型別Redis資料型別
- Redis五大資料型別之 List(列表)Redis大資料資料型別
- Redis五大資料型別之 Set(集合)Redis大資料資料型別
- 常用php操作redis命令整理(三)LIST型別PHPRedis型別
- 常用php操作redis命令整理(四)SET型別PHPRedis型別
- Mysql 基礎資料型別(無時間相關型別)MySql資料型別
- Numpy 資料型別和基本操作資料型別
- Redis資料型別Redis資料型別
- Python資料型別相關知識Python資料型別
- Redis 的 5 種資料型別的基本使用Redis資料型別
- Redis 三種特殊資料型別之 BitmapsRedis資料型別
- Redis多種資料型別以及使用場景Redis資料型別
- Redis的五大資料型別實現原理Redis大資料資料型別
- Redis 五大資料型別之 String(字串)Redis大資料資料型別字串
- Redis五大資料型別之 Hash(雜湊)Redis大資料資料型別