Redis常用資料結構學習筆記

2021-10-03 10:03:46 字數 4154 閱讀 8071

在對redis進行操作之前,首先要確定你要操作的資料庫,redis一共有16個資料庫,當然也可以通過修改databases值調整,預設情況下我們操作的是0號資料庫,可以通過以下指令進行修改:

select n
其中n就是我們期望操作的資料庫。接下來就可以愉快地操作和摩擦咯。

需要注意的是,經過筆者的測試,redis指令不區分大小寫,但是key會區分,筆者習慣輸入小寫指令。

keys * :查詢當前資料庫下所有的key

del key:delete操作,刪除對應key-value對

dump key:序列化給定key的value,並返回序列化後結果

exists key:檢查key是否存在

expire key second:為key設定過期時間,單位為s

ttl key:返回key剩餘有效時間

persist key:移除key的過期時間

move key db:移動key至指定序號的資料庫中

type key:返回key所儲存的值的型別

set key value:new乙個key-value對,並且給定key和value值;

setnt key value:當key不存在時設定key的值,如果存在則不進行操作,這個指令可以用於鎖操作

get key:獲取當前key的值;

getrange key start end:獲取當前key的值的子串,首字元從0開始;

mget key1 key2 …:獲取多個key的值

getset key value:獲取當前key的值並修改key的值,當key不存在,返回nil

strlen key:返回當前key的值長度

incr key:將當前key中的值自增+1,注意key的值要為數值,否則會報錯,如果當前key不存在,則將key的值初始化為0同時+1;

incrby key number:與incr作用一致,只是不+1,而是+number;

decr key:與incr相反,進行自減操作;

decrby key number:與incrby作用相反,操作後將原值-number;

相關說明:

1)string通常用於儲存單個字串;

2)由於string是二進位制安全的,因此也可以用於儲存保密要求較高的及檔案;

3)利用incr,dicr等操作可以實現計數功能,這些操作本身是原子性的,因此不必擔心多執行緒操作造成的安全問題。

hash用於儲存物件時非常方便,在redis的指令中首字母為h的,一般都是對hash型別的操作。

hset key field value:為指定的key設定field和value;

hmset key field1 vlue1 [field2,value2]…:為指定的key設定多個field和value;

hget key field:顧名思義,獲取key中field的值;

hmget key field1 [field2]…:獲取key中多個field值;

hkeys key:獲取key中全部的field;

hgetall key:獲取key中全部的field和value;

hlen key:獲取key中的fiedl數量;

hdel key field1 [field]:刪除key中的乙個或多個字段;

相關說明:

1)相比於string,hash更適合用來儲存一類事物,如乙個struct,乙個node,或者乙個class;相比於string,儲存這類資料能在key的儲存上節省很多空間;

2)如果乙個hash的field為空,那麼對應的key則會被刪除。

與hash類似,在redis的指令中首字母為l或r的,一般都是對list的操作,其中l的含義有可能是list,也有可能是left。

lpush key value1 [value2] :從左側插入值,如果list不存在,則新建;

rpush key value1 [value2] :從右側插入值,如果list不存在,則新建;

lpushx key value:從左側插入值,如果list不存在,則不操作 ;

rpushx key value:從右側插入值,如果list不存在,則不操作;

llen key:獲取列表長度 ;

lindex key index:獲取指定索引的元素 ;

lrange key start stop:獲取列表指定範圍的元素 ,-1代表末尾;

lpop key :從左側移除第乙個元素 ;

prop key:移除列表最後乙個元素 blpop key;

[key1] timeout:移除並獲取列表第乙個元素,如果列表沒有元素會阻塞列表到等待超時或發現可彈出元素為止 brpop key;

[key1] timeout:移除並獲取列表最後乙個元素,如果列表沒有元素會阻塞列表到等待超時或發現可彈出元素為止 ;

ltrim key start stop :對列表進行修改,讓列表只保留指定區間的元素,不在指定區間的元素就會被刪除 ;

lset key index value:指定索引的值 ;

linsert key before|after world value:在列表元素前或則後插入元素;

rpoplpush list1 list2:將list1最後元素彈出並加入到list2列表,用此命令可以實現訂單下單流程、使用者系統登入註冊簡訊等。

同樣地,在redis的指令中首字母為s的,一般都是對set的操作。

sadd key value1[value2]:向集合新增成員 ;

scard key:返回集合成員數;

smembers key:返回集合中所有成員 ;

sismember key member:判斷memeber是否是集合key的成員;

srandmember key [count]:隨機返回集合中乙個或多個成員

spop key:隨機返回並移除集合中的乙個元素

srem key member1 [member2]:移除集合中乙個或多個成員 ;

smove source destination member:將member元素從source集合移動到destination集合 ;

sdiff (des) key1 key2:返回key1中有而key2中沒有的元素,並儲存在集合des中;

sinter (des) key1 key2:返回key1和key2公有的元素(交集),並儲存在集合des中;

sunion (des) key1 key2:返回key1和key2的並集,並儲存在集合des中;

相關說明:

1)set主要用於跟蹤具有唯一性的資料,例如統計訪問**的全部ip等;

2)同時,由於set對集合可以進行方便的操作,可以通過交集查詢兩人的共同好友,共同喜好,通過並集拓展可能認識的人等。

zset也是一種集合它和set最大的區別就是,zset會對內部元素引入乙個score,並且通過score來對集合內元素進行排序,預設情況下為從小到大。

zadd key score1 memeber1

zcard key :獲取集合中的元素數量;

zcount key min max:計算在有序集合中指定區間分數的成員數 ;

zcount key min max 計算在有序集合中指定區間分數的成員數 ;

zrank key member:返回有序集合指定成員的索引 ;

zrevrange key start stop:返回有序集中指定區間內的成員,通過索引,分數從高到底,其中-1代表末尾;

zrem key member [member …] 移除有序集合中的乙個或多個成員

zremrangebyrank key start stop 移除有序集合中給定的排名區間的所有成員(第一名是0)(低到高排序)

zrenrangebyscore key min max 移除有序集合中給定的分數區間的所有成員

Redis資料結構學習

redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 先cd進入redis的安裝目錄下 redis server.exe redis.windows.conf然後開啟另外乙個cmd檔案 redis cli.exe h...

資料結構學習筆記

資料結構概述 定義我們如何把現實中大量而複雜的問題以特定的資料型別和特定的儲存結構 儲存到主儲存器 記憶體 中,以及在此基礎上為實現某個功能 比如查詢摸個 元素,刪除某個元素,對所有元素進行排序 而執行的相應操作,這個相應 的操作也叫演算法 資料結構 個體 個體的關係 演算法 對儲存資料的操作 演算...

資料結構學習筆記

資料結構學習筆記 程式 資料結構 演算法 資料結構 資料 結構 結構的本質是關係 資料之間的關係從不通風層面上分為邏輯關係和物理關係 演算法的設計要依據資料的邏輯關係 演算法的實現要依據資料的物理關係 物理關係是邏輯關係的基礎和載體 演算法實現時需要先依據問題抽象出資料模型,即初步確定待處理資料的邏...