Redis資料結構

2021-10-03 16:22:07 字數 3332 閱讀 5406

redis(一)、redis五種資料結構

對redis來說,所有的key(鍵)都是字串。

是redis中最基本的資料型別,乙個key對應乙個value。

string型別是二進位制安全的,意思是 redis 的 string 可以包含任何資料。如數字,字串,jpg或者序列化的物件。

使用:get 、 set 、 del 、 incr、 decr 等

127.0.0.1:6379> set hello world

ok127.0.0.1:6379> get hello

"world"

127.0.0.1:6379> del hello

(integer) 1

127.0.0.1:6379> get hello

(nil)

127.0.0.1:6379> get counter

"2"127.0.0.1:6379> incr counter

(integer) 3

127.0.0.1:6379> get counter

"3"127.0.0.1:6379> incrby counter 100

(integer) 103

127.0.0.1:6379> get counter

"103"

127.0.0.1:6379> decr counter

(integer) 102

127.0.0.1:6379> get counter

"102"

實戰場景:

3.session:常見方案spring session + redis實現session共享,

是乙個mapmap,指值本身又是一種鍵值對結構,如 value=,......fieldn,valuen}}

使用:所有hash的命令都是  h   開頭的     hget  、hset 、  hdel 等

127.0.0.1:6379> hset user name1 hao

(integer) 1

127.0.0.1:6379> hset user email1 [email protected]

(integer) 1

127.0.0.1:6379> hgetall user

1) "name1"

2) "hao"

3) "email1"

4) "[email protected]"

127.0.0.1:6379> hget user user

(nil)

127.0.0.1:6379> hget user name1

"hao"

127.0.0.1:6379> hset user name2 xiaohao

(integer) 1

127.0.0.1:6379> hset user email2 [email protected]

(integer) 1

127.0.0.1:6379> hgetall user

1) "name1"

2) "hao"

3) "email1"

4) "[email protected]"

5) "name2"

6) "xiaohao"

7) "email2"

8) "[email protected]"

實戰場景:

list 說白了就是鍊錶(redis 使用雙端鍊錶實現的 list),是有序的,value可以重複,可以通過下標取出對應的value值,左右兩邊都能進行插入和刪除資料。

使用列表的技巧

使用:

127.0.0.1:6379> lpush mylist 1 2 ll ls mem

(integer) 5

127.0.0.1:6379> lrange mylist 0 -1

1) "mem"

2) "ls"

3) "ll"

4) "2"

5) "1"

127.0.0.1:6379>

實戰場景:

1.timeline:例如微博的時間軸,有人發布微博,用lpush加入時間軸,展示新的列表資訊。

集合型別也是用來儲存多個字串的元素,但和列表不同的是集合中  1. 不允許有重複的元素,2.集合中的元素是無序的,不能通過索引下標獲取元素,3.支援集合間的操作,可以取多個集合取交集、並集、差集。

使用:命令都是以s開頭的  sset 、srem、scard、smembers、sismember

127.0.0.1:6379> sadd myset hao hao1 xiaohao hao

(integer) 3

127.0.0.1:6379> smembers myset

1) "xiaohao"

2) "hao1"

3) "hao"

127.0.0.1:6379> sismember myset hao

(integer) 1

實戰場景;

1.標籤(tag),給使用者新增標籤,或者使用者給訊息新增標籤,這樣有同一標籤或者類似標籤的可以給推薦關注的事或者關注的人。

2.點讚,或點踩,收藏等,可以放到set中實現

有序集合和集合有著必然的聯絡,保留了集合不能有重複成員的特性,區別是,有序集合中的元素是可以排序的,它給每個元素設定乙個分數,作為排序的依據。

(有序集合中的元素不可以重複,但是score 分數 可以重複,就和乙個班裡的同學學號不能重複,但考試成績可以相同)。

使用: 有序集合的命令都是 以  z  開頭    zadd 、 zrange、 zscore

127.0.0.1:6379> zadd myscoreset 100 hao 90 xiaohao

(integer) 2

127.0.0.1:6379> zrange myscoreset 0 -1

1) "xiaohao"

2) "hao"

127.0.0.1:6379> zscore myscoreset hao

"100"

實戰場景:

Redis資料結構

字典 dict 是redis裡最核心的資料結構,正如其全稱remote dictionary service所說,redis其實就是乙個字典服務,字典以key value的形式呈現給使用者,key是簡單的字串,而value可以是各種資料結構,比如字串 string 鍊錶 list 集合 set 排序...

Redis 資料結構

最近接觸到了redis的使用,借這個機會深入的了解一下redis的實現和設計原理。下面先介紹一下redis底層所用到的資料結構。redis的實現幾乎都是基於下面的幾個資料結構之上的。struct sdshdr struct listnode struct list struct dictentry ...

redis 資料結構

今天學習了redis的列表型別 lpush ltrim lrange lpush mylist content ltrim 0,99 lrange 0,1 lrange 兩個引數 分別代表第乙個元素和最後乙個元素 redis的列表型別,可以用來做訊息佇列 使用乙個程序 用lpush命名作為生產者 使...