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