redis之五種資料結構的基本操作

2021-08-15 17:24:55 字數 4375 閱讀 2995

在redis中所有資料都有乙個鍵,鍵都是字串,對應的值有五種:字串、列表、雜湊表、集合、有序集合,當然在值當中也可能有鍵值對關係

redis中所有的鍵都可以直接操作,不需要宣告或者建立

1.字串

基本命令:

get:獲取儲存在指定鍵中的值,以字串形式返回值

set:設定鍵值對,返回ok

del:刪除指定鍵,以及對應的值,這個命令適合所有資料型別,返回刪除的值的數量

測試:

127.0.0.1:6379> set name zhangsan

ok127.0.0.1:6379> get name

"zhangsan"

127.0.0.1:6379> del name

(integer) 1

127.0.0.1:6379> get name

(nil)

2.列表

基本命令:

lpush:從左邊,即向列表開始處推入乙個元素,返回列表現有元素數量

rpush:從右邊,即向列表末尾處追加乙個元素,返回列表現有元素數量

lpop:從左邊,即從列表開始處彈出乙個元素,返回彈出的元素

rpop:從右邊,即從列表末尾彈出乙個元素,返回彈出的元素

lindex:獲取指定下標的列表元素,下標從0開始

lrange:獲取指定範圍內的列表元素,開始位置包含,結束位置不包含

測試:

127.0.0.1:6379> lrange mylist 0 -1

(empty list or set)

127.0.0.1:6379> lpush mylist first

(integer) 1

127.0.0.1:6379> lrange mylist 0 -1

1) "first"

127.0.0.1:6379> lpush mylist second

(integer) 2

127.0.0.1:6379> lrange mylist 0 -1

1) "second"

2) "first"

127.0.0.1:6379> rpush mylist third

(integer) 3

127.0.0.1:6379> lrange mylist 0 -1

1) "second"

2) "first"

3) "third"

127.0.0.1:6379> rpush mylist forth

(integer) 4

127.0.0.1:6379> lrange mylist 0 -1

1) "second"

2) "first"

3) "third"

4) "forth"

127.0.0.1:6379> lpop mylist

"second"

127.0.0.1:6379> lrange mylist 0 -1

1) "first"

2) "third"

3) "forth"

127.0.0.1:6379> rpop mylist

"forth"

127.0.0.1:6379> lrange mylist 0 -1

1) "first"

2) "third"

127.0.0.1:6379> lindex mylist 0

"first"

127.0.0.1:6379> lindex mylist 1

"third"

3集合

基本命令:

sadd:新增元素到集合,返回1表示成功,返回0表示元素已經存在於集合中

srem:從集合移除指定元素,返回1表示成功,返回0表示元素不存在

sismember:指定元素是否存在於集合中,1表示true,0表示false

smembers:獲取集合中所有元素

測試:

127.0.0.1:6379> sadd myset zhangsan

(integer) 1

127.0.0.1:6379> sadd myset zhangsan

(integer) 0

127.0.0.1:6379> sismember myset zhangsan

(integer) 1

127.0.0.1:6379> sismember myset lisi

(integer) 0

127.0.0.1:6379> sadd myset lisi

(integer) 1

127.0.0.1:6379> smembers myset

1) "lisi"

2) "zhangsan"

127.0.0.1:6379> srem myset zhangsan

(integer) 1

127.0.0.1:6379> smembers myset

1) "lisi"

127.0.0.1:6379> srem myset zhangsan

(integer) 0

4雜湊

redis的雜湊儲存了多個鍵值對之間的對映,值既可以是字串又可以是數值,雜湊的鍵值對與redis本身的鍵值對關係放在一起有些不好辨識

基本命令:

hset:設定鍵值對,返回1或者0,當重新設定乙個已經存在的鍵時,返回0,但是設定成功

hget:獲取指定鍵的值,返回值

hgetall:獲取雜湊中所有鍵值對,返回所有鍵值對

hdel:刪除指定鍵值對,返回1或者0

127.0.0.1:6379> hset myhash name wangwu

(integer) 1

127.0.0.1:6379> hget myhash name

"wangwu"

127.0.0.1:6379> hset myhash age 22

(integer) 1

127.0.0.1:6379> hset myhash name lisi

(integer) 0

127.0.0.1:6379> hgetall myhash

1) "name"

2) "lisi"

3) "age"

4) "22"

127.0.0.1:6379> hdel myhash name

(integer) 1

127.0.0.1:6379> hgetall myhash

1) "age"

2) "22"

5有序集合

有序集合儲存的是成員(member)與分值(score)的對映,成員是普通字串,分值是浮點數,與雜湊的最大不同就是既可以根據分值訪問成員,也可以直接操作成員

基本命令:

zadd:新增乙個分值、成員對映

zrem:移除給定成員

zrange:根據分值的排列順序,獲取指定範圍成員,也可以同時獲取分值

zrangebyscore:根據分值範圍獲取指定成員,也可以同時獲取分值

測試:

127.0.0.1:6379> zadd myzset 700 member1

(integer) 1

127.0.0.1:6379> zadd myzset 800 member2

(integer) 1

127.0.0.1:6379> zadd myzset 600 member3

(integer) 1

127.0.0.1:6379> zrange myzset 0 2

1) "member3"

2) "member1"

3) "member2"

127.0.0.1:6379> zrange myzset 0 1 withscores

1) "member3"

2) "600"

3) "member1"

4) "700"

127.0.0.1:6379> zrangebyscore myzset 0 850

1) "member3"

2) "member1"

3) "member2"

127.0.0.1:6379> zrangebyscore myzset 0 750

1) "member3"

2) "member1"

127.0.0.1:6379> zrem myzset member1

(integer) 1

127.0.0.1:6379> zrange myzset 0 -1

1) "member3"

2) "member2"

可以看到在有序集合中,分值主要用來排序,但是也可以直接操作成員

Redis五種資料結構

redis除了儲存鍵之外還可以儲存常見的5種資料型別,分別是 string list set zset hash。結構型別 結構儲存的值 結構的讀寫能力 string字串 可以是字串 整數或浮點數 對整個字串或字串的一部分進行操作 對整數或浮點數進行自增或自減操作 list列表 乙個鍊錶,鍊錶上的每...

Redis五種資料結構

對redis來說,所有的key 鍵 都是字串,所謂的5種資料結構是指針對value而言 資料結構型別 說明使用場景 常用方法 其他鏈結 string字串型別1 redis中最基本的資料型別,乙個key對應乙個value。2 是二進位制安全的,意思是 redis 的 string 可以包含任何資料。如...

redis的五種資料結構

key 都是字串 value 五種資料結構 常用命令 常用命令 新增 lpush key value 將元素加入列表左邊 rpush key value 將元素加入列表右邊 獲取 lrange key start end 獲取範圍 刪除 lpop key 刪除列表最左邊的元素,並將元素返回 rpop...