Redis學習筆記(一)——五大數(shù)據(jù)類型

1.1 string 類型

set [key] [name]

get [key] 獲取鍵值

append [key] [name] 追加字符串,如果當前key不存在,就相當于set key name

strlen [key] 返回字符串長度

dbsize 數(shù)據(jù)庫大小

keys * 獲得鍵名列表

flushdb 刪除當前數(shù)據(jù)庫

flushall 刪除所有數(shù)據(jù)庫

EXISTS [key]判斷一個鍵是否存在

del [key] 刪除鍵

type key 獲得鍵值的數(shù)據(jù)類型

move [key] [dbname] 移動key到數(shù)據(jù)庫dbname

EXPIRE [key] [sec] 設置多長時間失效,單位是秒

ttl [key] 查看剩余失效時間

incr [key] 自增1

decr [key] 自減1

INCRBY [key] [step] 指定增量步長

DECRBY [key] [step] 指定減量步長

GETRANGE [key] [start] [end] 截取字符串[start,end]范圍的字符

SETRANGE [key] [offset] [value] 把從偏移量1開始的字符替換為value

setex [key] [time] [value] 設置key 的值在time時間后過期,時間單位是秒

setnx [key] [value] 如果key不存在就設置,其值是value。若key存在,就不設置,返回0,在分布式鎖中常常使用

mset [key] [value] [k2] [v2] ...設置多個值

msetnx [k1] [v1] [k2] [v2] 是一個原子操作,也是同時設置多個值,如果有的值已經(jīng)存在,就失敗

mget [k1] [k2] [k3] 同時獲取多個值

key的一個巧妙的設計

mset [userKey]:[id]:[key1] [value1][userKey]:[id]:[key2] [value2]

mget [userKey]:[id]:[key1]? [userKey]:[id]:[key2]

如:mset user:1:name zhangsan user:1:age 13

mget user:1:name user:1:age

getset [key] [name] 先get后set。如果不存在值,就返回nil,如果存在值,就獲取原來的值,并設置新的值

1.2 list類型

在redis里list可以變成stack,queue,阻塞隊列。實際上是一個鏈表。在兩邊插入或者改動效率最高!中間元素效率會低一點。

消息隊列(LPUSH RPOP)/ 棧(LPUSH LPOP)

lpush [key] [value]/[value]... 將一個值或者多個值插入到一個列表的頭部(L-left)

rpush?[key] [value]/[value]...將一個值或者多個值插入到一個列表的尾部(R-right)

lrange [key] [start] [end] 通過區(qū)間獲取具體的值,其中【0 -1】表示獲取整個區(qū)間

lpop [key] [count 可選] 移除頭部幾個元素,默認一個

rpop??[key] [count可選] 移除尾部幾個元素,默認一個

lindex [key] [index] 獲取某個下標的值,下標從0開始

llen [key] 返回列表的長度

lrem [key] [count] [value] 移除列表中count個值為value的數(shù)據(jù),精確匹配

ltrim [key] [start] [stop] 截取鏈表中從start開始到stop的數(shù)據(jù)

rpoplpush [source] [destination] 移除列表最后一個元素,將他移動到新的列表

lset [key] [index] [value] 如果列表不存在就會報錯,如果存在,就是更新list中下標為index的元素值為value

linsert [key] before/after [pivot] [value] 在列表key中單詞pivot的前面或者后面加元素value

1.3 set 集合類型

set集合,里面的元素是不能重復的

sadd [key] [value]/[value]... 往集合中添加元素

smenmber [key] 查看集合key所有的值

sismember [key] [value] 查看value是不是集合key中的值

scard [key] 返回集合總數(shù)

srem [key] [value] 刪除集合中某個元素

srandmember [key] [cnt可選] 從集合中隨機抽取出幾個元素,默認一個

spop [key] [cnt可選] 隨機刪除集合中的幾個數(shù),默認一個

smove [key] [src] [destination] [value] 把原集合src的值value移動到目標集合des

數(shù)字集合類

差集:sdiff [key1] [key2]..

交集:sinter [key1] [key2] ..

并集:sunion [key1] [key2] ..

1.4 hash哈希類型

hash(哈希)相當于一個map集合,本質和string沒有什么區(qū)別,還是一個簡單的key-value

hset [key] [field] [value] set一個具體的key-value

hget [key] [field] 獲取一個set中字段值

hmset [key] [field] [value] [field] [value]

set多個值

hmget [key] [field] [filed] get多個值

hgetall [key] 獲取全部的數(shù)據(jù)

hdel [key] [field] 刪除hash指定key字段的值!對應的value字段值也消失

hlen [key] 獲取哈希表的字段數(shù)量

hexists [key] [field] 判斷哈希表中是否存在字段field

hkeys [key] 獲取哈希表中所有的keys字段名

hvals [key] 獲取哈希表中所有的values值

hincrby [key] [field] [step] 指定增量

hsetnx [key] [field] [value] 如果不存在則設置,如果存在就不設置

hash變更的數(shù)據(jù)usr age

name 尤其是用戶信息之類的,經(jīng)常變動的信息。

hash更適合存儲對象,string更適合字符串

1.5 zset有序集合類型

Zset可以排序的一個集合

zadd [key] [score] [value] 如ZADD score 100 liming 32 wangxiao 120 lili 200 wangwu

zrange [key] [start] [end] [withscores可選] 列出start到end之間的數(shù)據(jù)

ZRANGEBYSCORE key min max [WITHSCORES]

[LIMIT offset count] 返回key的有序集合中的分數(shù)在min和max之間的所有元素(包括分數(shù)等于max或者min的元素)。元素被認為是從低分到高分排序的。

如:zrangebyscore score -inf +inf withscores

zrevrange [key] [start] [end]? [withscores可選] 將數(shù)據(jù)從start到end,從大到小排序,列出 有序集合

zrem [key] [value] 刪除有序集合中值為value的數(shù)據(jù)

zcard [key] 獲取有序集合數(shù)量

zcount [key] [min] [max] 獲取指定區(qū)間的集合

set可以用于排序,存儲班級成績表,工資排序表

普通消息1,重要消息2 帶權重進行判斷

排行榜應用實現(xiàn)?取TOP N

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容