Redis 五種資料型別和相關操作命令

Hoking發表於2018-05-02

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) 命令

命令

描述

Redis SET 命令

設定指定 key 的值

Redis Get 命令

獲取指定 key 的值。

Redis Getrange 命令

返回 key 中字串值的子字元

Redis Getset 命令

將給定 key 的值設為 value ,並返回 key 的舊值(old value)。

Redis Getbit 命令

對 key 所儲存的字串值,獲取指定偏移量上的位(bit)。

Redis Mget 命令

獲取所有(一個或多個)給定 key 的值。

Redis Setbit 命令

對 key 所儲存的字串值,設定或清除指定偏移量上的位(bit)。

Redis Setex 命令

將值 value 關聯到 key ,並將 key 的過期時間設為 seconds (以秒為單位)。

Redis Setnx 命令

只有在 key 不存在時設定 key 的值。

Redis Setrange 命令

用 value 引數覆寫給定 key 所儲存的字串值,從偏移量 offset 開始。

Redis Strlen 命令

返回 key 所儲存的字串值的長度。

Redis Mset 命令

同時設定一個或多個 key-value 對。

Redis Msetnx 命令

同時設定一個或多個 key-value 對,當且僅當所有給定 key 都不存在。

Redis Psetex 命令

這個命令和 SETEX 命令相似,但它以毫秒為單位設定 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位。

Redis Incr 命令

將 key 中儲存的數字值增一。

Redis Incrby 命令

將 key 所儲存的值加上給定的增量值(increment) 。

Redis Incrbyfloat 命令

將 key 所儲存的值加上給定的浮點增量值(increment) 。

Redis Decr 命令

將 key 中儲存的數字值減一。

Redis Decrby 命令

key 所儲存的值減去給定的減量值(decrement) 。

Redis Append 命令

如果 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) 命令

命令

描述

Redis Hdel 命令

刪除一個或多個雜湊表欄位

Redis Hexists 命令

檢視雜湊表 key 中,指定的欄位是否存在。

Redis Hget 命令

獲取儲存在雜湊表中指定欄位的值/td>

Redis Hgetall 命令

獲取在雜湊表中指定 key 的所有欄位和值

Redis Hincrby 命令

為雜湊表 key 中的指定欄位的整數值加上增量 increment 。

Redis Hincrbyfloat 命令

為雜湊表 key 中的指定欄位的浮點數值加上增量 increment 。

Redis Hkeys 命令

獲取所有雜湊表中的欄位

Redis Hlen 命令

獲取雜湊表中欄位的數量

Redis Hmget 命令

獲取所有給定欄位的值

Redis Hmset 命令

同時將多個 field-value (域-值)對設定到雜湊表 key 中。

Redis Hset 命令

將雜湊表 key 中的欄位 field 的值設為 value 。

Redis Hsetnx 命令

只有在欄位 field 不存在時,設定雜湊表欄位的值。

Redis Hvals 命令

獲取雜湊表中所有值

 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) 命令

命令

描述

Redis Blpop 命令

移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。

Redis Brpop 命令

移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。

Redis Brpoplpush 命令

從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。

Redis Lindex 命令

通過索引獲取列表中的元素

Redis Linsert 命令

在列表的元素前或者後插入元素

Redis Llen 命令

獲取列表長度

Redis Lpop 命令

移出並獲取列表的第一個元素

Redis Lpush 命令

將一個或多個值插入到列表頭部

Redis Lpushx 命令

將一個或多個值插入到已存在的列表頭部

Redis Lrange 命令

獲取列表指定範圍內的元素

Redis Lrem 命令

移除列表元素

Redis Lset 命令

通過索引設定列表元素的值

Redis Ltrim 命令

對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。

Redis Rpop 命令

移除並獲取列表最後一個元素

Redis Rpoplpush 命令

移除列表的最後一個元素,並將該元素新增到另一個列表並返回

Redis Rpush 命令

在列表中新增一個或多個值

Redis Rpushx 命令

為已存在的列表新增值


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) 命令

命令

描述

Redis Sadd 命令

向集合新增一個或多個成員

Redis Scard 命令

獲取集合的成員數

Redis Sdiff 命令

返回給定所有集合的差集

Redis Sdiffstore 命令

返回給定所有集合的差集並儲存在 destination

Redis Sinter 命令

返回給定所有集合的交集

Redis Sinterstore 命令

返回給定所有集合的交集並儲存在 destination

Redis Sismember 命令

判斷 member 元素是否是集合 key 的成員

Redis Smembers 命令

返回集合中的所有成員

Redis Smove 命令

將 member 元素從 source 集合移動到 destination 集合

Redis Spop 命令

移除並返回集合中的一個隨機元素

Redis Srandmember 命令

返回集合中一個或多個隨機數

Redis Srem 命令

移除集合中一個或多個成員

Redis Sunion 命令

返回所有給定集合的並集

Redis Sunionstore 命令

所有給定集合的並集儲存在 destination 集合中

Redis Sscan 命令

迭代集合中的元素


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) 命令

命令

描述

Redis Zadd 命令

向有序集合新增一個或多個成員,或者更新已存在成員的分數

Redis Zcard 命令

獲取有序集合的成員數

Redis Zcount 命令

計算在有序集合中指定區間分數的成員數

Redis Zincrby 命令

有序集合中對指定成員的分數加上增量 increment

Redis Zinterstore 命令

計算給定的一個或多個有序集的交集並將結果集儲存在新的有序集合 key

Redis Zlexcount 命令

在有序集合中計算指定字典區間內成員數量

Redis Zrange 命令

通過索引區間返回有序集合成指定區間內的成員

Redis Zrangebylex 命令

通過字典區間返回有序集合的成員

Redis Zrangebyscore 命令

通過分數返回有序集合指定區間內的成員

Redis Zrank 命令

返回有序集合中指定成員的索引

Redis Zrem 命令

移除有序集合中的一個或多個成員

Redis Zremrangebylex 命令

移除有序集合中給定的字典區間的所有成員

Redis Zremrangebyrank 命令

移除有序集合中給定的排名區間的所有成員

Redis Zremrangebyscore 命令

移除有序集合中給定的分數區間的所有成員

Redis Zrevrange 命令

返回有序集中指定區間內的成員,通過索引,分數從高到底

Redis Zrevrangebyscore 命令

返回有序集中指定分數區間內的成員,分數從高到低排序

Redis Zrevrank 命令

返回有序集合中指定成員的排名,有序整合員按分數值遞減(從大到小)排序

Redis Zscore 命令

返回有序集中,成員的分數值

Redis Zunionstore 命令

計算給定的一個或多個有序集的並集,並儲存在新的 key

Redis Zscan 命令

迭代有序集合中的元素(包括元素成員和元素分值)


Redis HyperLogLog
命令

命令

描述

Redis Pfadd 命令

新增指定元素到 HyperLogLog 中。

Redis Pfcount 命令

返回給定 HyperLogLog 的基數估算值。

Redis Pgmerge 命令

將多個 HyperLogLog 合併為一個 HyperLogLog


Redis
釋出訂閱命令

命令

描述

Redis Psubscribe 命令

訂閱一個或多個符合給定模式的頻道。

Redis Pubsub 命令

檢視訂閱與釋出系統狀態。

Redis Publish 命令

將資訊傳送到指定的頻道。

Redis Punsubscribe 命令

退訂所有給定模式的頻道。

Redis Subscribe 命令

訂閱給定的一個或多個頻道的資訊。

Redis Unsubscribe 命令

指退訂給定的頻道。


Redis
事務命令

命令

描述

Redis Discard 命令

取消事務,放棄執行事務塊內的所有命令。

Redis Exec 命令

執行所有事務塊內的命令。

Redis Multi 命令

標記一個事務塊的開始。

Redis Unwatch 命令

取消 WATCH 命令對所有 key 的監視。

Redis Watch 命令

監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麼事務將被打斷。

 

Redis 指令碼命令

命令

描述

Redis Eval 命令

執行 Lua 指令碼。

Redis Evalsha 命令

執行 Lua 指令碼。

Redis Script Exists 命令

檢視指定的指令碼是否已經被儲存在快取當中。

Redis Script Flush 命令

從指令碼快取中移除所有指令碼。

Redis Script kill 命令

殺死當前正在執行的 Lua 指令碼。

Redis Script Load 命令

將指令碼 script 新增到指令碼快取中,但並不立即執行這個指令碼。


Redis
連線命令

命令

描述

Redis Auth 命令

驗證密碼是否正確

Redis Echo 命令

列印字串

Redis Ping 命令

檢視服務是否執行

Redis Quit 命令

關閉當前連線

Redis Select 命令

切換到指定的資料庫


Redis
伺服器命令

命令

描述

Redis Bgrewriteaof 命令

非同步執行一個 AOF(AppendOnly File) 檔案重寫操作

Redis Bgsave 命令

在後臺非同步儲存當前資料庫的資料到磁碟

Redis Client Kill 命令

關閉客戶端連線

Redis Client List 命令

獲取連線到伺服器的客戶端連線列表

Redis Client Getname 命令

獲取連線的名稱

Redis Client Pause 命令

在指定時間內終止執行來自客戶端的命令

Redis Client Setname 命令

設定當前連線的名稱

Redis Cluster Slots 命令

獲取叢集節點的對映陣列

Redis Command 命令

獲取 Redis 命令詳情陣列

Redis Command Count 命令

獲取 Redis 命令總數

Redis Command Getkeys 命令

獲取給定命令的所有鍵

Redis Time 命令

返回當前伺服器時間

Redis Command Info 命令

獲取指定 Redis 命令描述的陣列

Redis Config Get 命令

獲取指定配置引數的值

Redis Config rewrite 命令

對啟動 Redis 伺服器時所指定的 redis.conf 配置檔案進行改寫

Redis Config Set 命令

修改 redis 配置引數,無需重啟

Redis Config Resetstat 命令

重置 INFO 命令中的某些統計資料

Redis Dbsize 命令

返回當前資料庫的 key 的數量

Redis Debug Object 命令

獲取 key 的除錯資訊

Redis Debug Segfault 命令

讓 Redis 服務崩潰

Redis Flushall 命令

刪除所有資料庫的所有key

Redis Flushdb 命令

刪除當前資料庫的所有key

Redis Info 命令

獲取 Redis 伺服器的各種資訊和統計數值

Redis Lastsave 命令

返回最近一次 Redis 成功將資料儲存到磁碟上的時間,以 UNIX 時間戳格式表示

Redis Monitor 命令

實時列印出 Redis 伺服器接收到的命令,除錯用

Redis Role 命令

返回主從例項所屬的角色

Redis Save 命令

非同步儲存資料到硬碟

Redis Shutdown 命令

非同步儲存資料到硬碟,並關閉伺服器

Redis Slaveof 命令

將當前伺服器轉變為指定伺服器的從屬伺服器(slave server)

Redis Showlog 命令

管理 redis 的慢日誌

Redis Sync 命令

用於複製功能(replication)的內部命令


Redis 地理位置(geo) 命令

命令

描述

Redis GEOADD 命令

將指定的地理空間位置(緯度、經度、名稱)新增到指定的key

Redis GEODIST 命令

返回兩個給定位置之間的距離

Redis GEOHASH 命令

返回一個或多個位置元素的 Geohash 表示

Redis GEOPOS 命令

從key裡返回所有給定位置元素的位置(經度和緯度)

Redis GEORADIUS 命令

以給定的經緯度為中心, 找出某一半徑內的元素

Redis GEORADIUSBYMEMBER 命令

找出位於指定範圍內的元素,中心點是由給定的位置元素決定

相關文章