Redis資料結構

2022-09-10 20:06:18 字數 2575 閱讀 3947

官網

[root@172-7-15-101 ~]# redis-cli lrange mylist 0 2

1) "aaaa bbb."

2) "1 2 3."

3) "aminglinux."

[root@172-7-15-101 ~]# redis-cli lrange mylist 0 1

1) "aaaa bbb."

2) "1 2 3."

set是集合,和我們數學中的集合概念相似,對集合的操作有新增刪除元素,有對多個集合求交並差等操作。操作中key理解為集合的名字。比如在微博應用中,可以將乙個使用者所有的關注人存在乙個集合中,將其所有粉絲存在乙個集合。因為 redis 非常人性化的為集合提供了求交集、並集、差集等操作,那麼就可以非常方便的實現如共同關注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結果返回給客戶端還是存集到乙個新的集合中。(隨機排序)

[root@172-7-15-101 ~]# redis-cli sadd myset a

(integer) 1

[root@172-7-15-101 ~]# redis-cli sadd myset b

(integer) 1

[root@172-7-15-101 ~]# redis-cli sadd myset d

(integer) 1

[root@172-7-15-101 ~]# redis-cli smembers myset

1) "b"

2) "d"

3) "a"

sorted set是有序集合,它比set多了乙個權重引數score,使得集合中的元素能夠按 score 進行有序排列,比如乙個儲存全班同學成績的 sorted sets,其集合 value 可以是同學的學號,而 score 就可以是其考試得分,這樣在資料插入集合的時候,就已經進行了天然的排序。另外還可以用 sorted sets 來做帶權重的佇列,比如普通資訊的 score 為1,重要訊息的 score 為2,然後工作執行緒可以選擇按 score 的倒序來獲取工作任務。讓重要的任務優先執行。

[root@172-7-15-101 ~]# redis-cli zadd aming 12 "abc"

(integer) 1

[root@172-7-15-101 ~]# redis-cli zadd aming 2 "cde 123"

(integer) 1

[root@172-7-15-101 ~]# redis-cli zadd aming 24 "123-aaa"

(integer) 1

[root@172-7-15-101 ~]# redis-cli zadd aming 4 "a123a"

(integer) 1

[root@172-7-15-101 ~]# redis-cli zrange aming 0 -1 (正序)

1) "cde 123"

2) "a123a"

3) "abc"

4) "123-aaa"

倒序[root@172-7-15-101 ~]# redis-cli zrevrange aming 0 -1

1) "123-aaa"

2) "abc"

3) "a123a"

4) "cde 123"

hash資料型別,在 memcached 中,我們經常將一些結構化的資訊打包成 hashmap,在客戶端序列化後儲存為乙個字串的值(一般是 json 格式),比如使用者的暱稱、年齡、性別、積分等。這時候在需要修改其中某一項時,通常需要將字串(json)取出來,然後進行反序列化,修改某一項的值,再序列化成字串(json)儲存回去。簡單修改乙個屬性就幹這麼多事情,消耗必定是很大的,也不適用於一些可能併發操作的場合(比如兩個併發的操作都需要修改積分)。而 redis 的 hash 結構可以使你像在資料庫中 update 乙個屬性一樣只修改某一項屬性值。

127.0.0.1:6379> hset aminglinux domain www.aminglinux.com

(integer) 1

127.0.0.1:6379> hget aminglinux domain

"www.aminglinux.com"

127.0.0.1:6379> hset aminglinux bbs www.lishiming.net

(integer) 1

127.0.0.1:6379> hget aminglinux bbs

"www.lishiming.net"

127.0.0.1:6379> hgetall aminglinux

1) "domain"

2) "www.aminglinux.com"

3) "bbs"

4) "www.lishiming.net"

radis持久化

分為兩種:

rdb在不同時間點,把資料生成快照,並儲存到磁碟裡。

aof和mysql主從的二進位制日誌差不多,把radis執行過的指令全部都記錄下來,radis重啟後,需要恢復時就把這些指令全部都再重新執行一次,就實現了資料恢復。

rdb與aof這兩種 持久化是可以一起使用的。在redis重啟後,會優先使用aof這種方式來進行資料恢復。

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