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命名作為生產者 使...