Redis基礎資料結構

liuawei發表於2018-09-16

系列文章基於Redis2.8版本
1:Redis學習資料收集
2:Redis基礎資料結構
3:Redis實現分散式鎖

2.1 String

2.1.1 小知識

Redis 的字串是動態字串,是可以修改的字串,內部結構實現上類似於Java的ArrayList,
需要注意的是字串最大長度為 512M。

2.1.2 SET GET 賦值,取值
SET key value [EX seconds] [PX milliseconds] [NX|XX]

如果KEY已存在,就覆蓋舊值

[EX seconds] 設定鍵的過期時間  秒 
SET key value EX second == SETEX key second value

[PX milliseconds] 設定鍵的過期時間 毫秒
SET key value PX millisecond == PSETX key millisecond value

NX  只有在鍵不存在的時候,才對鍵進行設定
SET key value NX == SETNX key value

XX 只在鍵已存在的時候,才對鍵進行設定

GET key 

返回key所關聯的字串值
2.1.3 MSET MGET 批量操作

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

MSET key1 value1 key2 value2 key value3

MGET key1 key2 key3
2.1.4 自增 自減
INCR key 將key儲存的數字增1
INCRBY key increment  將key儲存的數字增increment
INCRBYFLOAT key increment  將key儲存的數字增加浮點數increment
DECR key  將key儲存的數字減1
DECRBY key decrement 將key儲存的數字減decrement
2.1.5 value字元處理
SETRANGE key offset value  用value引數覆蓋給定key 從偏移量offset開始

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

GETRANGE key start end  返回key字串中的子串  -1表示最後個字元

APPEND key value  將value追加到原來的value的末尾
2.1.6 操作
賦值,取值
> set name liuawei
OK
> get name
"liuawei"
> set name liuawei2 NX
(nil)
> get name
"liuawei"
> set exkey exvalue EX 6
OK
> get exkey
"exvalue"
> get exkey
(nil)

自增,自減
> set key 18
OK
> set age 18
OK
> incr age
(integer) 19
> incrby age 5
>(integer) 24
> decr age
(integer) 23
> decrby age 5
(integer) 18
> incrbyfloat age 1.5
19.5

批量操作
> mset key1 value1 key2 value2 key3 value3
OK
> mget key1 key2 key3
1) "value1"
2) "value2"
3) "value3"


value字串操作

> set str `hello world`
OK
> setrange str 6 redis
11
> get str
"hello redis"
> strlen str
(integer) 11
> append str `v2.0`
15
> get str
>"hello redisv2.0"
> getrange str 0 -1
"hello redisv2.0"
> getrange str 0 5
"hello "
> getrange str -4 -1
"v2.0"

2.2 List列表操作

2.2.1 增加,取出元素
LPUSH key value [value...]
將一個或多個值value插入到列表key的頭部

LPUSHX key value
將值value插入到列表表頭,當且僅當key存在並且是一個列表

LPOP key
移除並返回列表key的頭元素

RPUSH kye value [value...]
將一個或多個值value插入到列表key的尾部

RPUSHX
將值value插入到列表key的表尾,當且僅當key存在並且是一個列表

RPOP
移除並返回列表key的微元素
2.2.2 value操作
LSET key index value
將列表key下標為index的元素值設定為value

LTRIM key start stop
讓列表保留制定區間內的元素,不在指定區間的元素被刪除

LREM key count value
根據引數count的值,移出列表中與引數value相等的元素

LRANGE key start stop
返回列表元素中指定區間內的元素

LLEN key
返回列表key的長度

LINSERT key BEFORE|AFTER pivot value
將值 value插入到列表key當中,位於值pivot之前或之後。

LINDEX key index
返回列表key中,下標為index的
2.2.3 阻塞
BLPOP key [key ...] timeout
列表阻塞式的彈出

BRPOP key [key ...] timeout
BRPOP 是列表的阻塞式(blocking)彈出原語。

2.2.4 特性
RPOPLPUSH source destination

BRPOPLPUSH source destination timeout
2.2.5 操作
右邊進左邊出:佇列
右邊進右邊出:棧

增加,取出元素:
> lpush list value1
(integer) 3
> del list
(integer) 0
> lpush list value1 value2
(integer) 2
> rpush list value3 value4
(integer) 4
> lrange list 0 -1
1) "value2"
2) "value1"
3) "value3"
4) "value4"

value操作

2.3 hash

2.3.1 設值取值
HSET key field value
將Hash表key中的field的值設定value。

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

HGET key field
返回雜湊表 key 中給定域 field 的值。

HGETALL key
返回雜湊表 key 中,所有的域和值。

HVALS key
返回雜湊表key中所有域的值。

HKEYS key
返回雜湊表key中的所有域。
2.3.2 其他操作
HDEL key field [field ...]
刪除雜湊表key中的一個或多個指定域,不存在的域將被忽略。

HEXISTS key field
檢視雜湊表key中,給定域 field 是否存在。

HLEN key
返回雜湊表 key 中域的數量。

2.4 set集合

2.4.1 新增 移除,遍歷 基礎操作
SADD key member [member ...]
將一個或多個member元素加入到集合key當中,已經存在於集合的member元素將被忽略。

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

SREM key member [member ...]
移除集合key中的一個和多個元素

SMEMBERS key
返回集合 key 中的所有成員。

SCARD key
返回集合 key 的基數(集合中元素的數量)。

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

2.4.2 集合操作

SDIFF key [ksy1...]
返回集合key的差集

SDIFFSTORE destination key [key ...]
返回集合key的差集並將結果保留在destinatio集合

SINTER key [key ...]
返回集合key的交集

SINTERSTORE destination key [key ...]
返回集合key的交集並將結果賦給destination

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

SRANDMEMBER key [count]
返回集合key裡面的一個隨機數

SUNION key [key ...]
返回結合key的全集

SUNIONSTORE destination key [key ...]
返回結合key的全集並將結果賦給destination

2.5 zset集合

2.5.1 新增 移除,遍歷 基礎操作
ZADD key score member [[score member] [score member] ...]
將一個或多個 member元素及其score值加入到有序集key當中。


ZCARD key
返回有序集 key的基數。

ZCOUNT key min max
返回有序集 key 中, score 值在 min 和 max 之間(預設包括 score 值等於 min 或 max )的成員的數量。



相關文章