1. redis的五大數(shù)據(jù)類型
- String(字符串): String 是redis最基本的數(shù)據(jù)類型,一個(gè)key對(duì)應(yīng)一個(gè)value堰燎;String是二進(jìn)制安全的漱挚;’redis的String可以包含任何的數(shù)據(jù)(jpg圖像和序列化的對(duì)象等都可以包含)漂彤;注意:一個(gè)redis中的字符串value最多可以存512M
- Hash(哈希,類似Map): redis hash是一個(gè)鍵值對(duì)集合灭将;是一個(gè)String類型的field和value的映射表 ,hash適合用于存儲(chǔ)對(duì)象后控;類似Java里面的Map<String,Object>
- List(列表): redis列表是簡(jiǎn)單的字符串列表庙曙,按照插入的順序排序,可以添加一個(gè)元素到列表的頭或者尾(注意:列表的底層是鏈表)
- Set(集合): Set是String類型的無序無重復(fù)的集合浩淘。他是通過HashTable實(shí)現(xiàn)的捌朴。
- Zset(sorted set: 有序集合): 和Set一樣無重復(fù)集合吴攒,不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)score;redis正式通過分?jǐn)?shù)為集合中的成員進(jìn)行從小到大的排序砂蔽。Zset的成員是唯一的洼怔,但score卻是可以重復(fù)的。
2. redis鍵(key)
-
keys *
: 列出所有的key -
exists key
: 判斷某個(gè)key是否存在 -
move key db
:將某個(gè)key移動(dòng)到某個(gè)庫去左驾,例如move hello 7
將key為hello的這個(gè)key 移動(dòng)到第8號(hào)庫镣隶。 -
expire key 秒鐘
:為給定的key設(shè)置過期時(shí)間 -
ttl key
:查看還有多少秒過期(-1表示永不過期,-2表示已過期) -
type key
:查看key是什么類型 -
del key
:刪除key
3. redis字符串(String:?jiǎn)沃祮蝪alue)
-
set key value
:設(shè)置key什荣;
get key
:獲取key矾缓;
del key
: 刪除key;
append key value
: 追加稻爬;
strlen key
: 獲取key的長(zhǎng)度 -
incr key
:值為數(shù)字的value+1;
decr key
:值為數(shù)字的value-1;
incrby key 增長(zhǎng)值
:值為數(shù)字的value+增長(zhǎng)值;
decrby key 增長(zhǎng)值
:值為數(shù)字的value-增長(zhǎng)值;
注意:如果value不是數(shù)字嗜闻,那么執(zhí)行這四個(gè)命令將報(bào)錯(cuò) - getrange:獲取指定區(qū)間的字符串;如
getrange key 0 -1
: 表示獲取key對(duì)應(yīng)的value與get key
一樣桅锄,getrange key 0 3
則是獲取這個(gè)key對(duì)應(yīng)的value的0-3個(gè)字符琉雳,包括第三個(gè),也就是說輸出的是4個(gè)字符友瘤;
setrange: 用來替換字符翠肘;如setrange key 0 111
: 表示從0個(gè)位置開始替換value的值,替換前三個(gè)為111辫秧。如果此key的value是qwert束倍,那么執(zhí)行了setrange key 0 111
命令以后value就變成了 111rt。 -
setex key 秒 value
: 設(shè)置key的同時(shí)為其設(shè)置過期時(shí)間盟戏;如setex abc 10 sssss
設(shè)置key為abc绪妹,value為sssss的數(shù)據(jù)過期時(shí)間為10秒鐘
setnx key value
: 如果key不存在則插入key和value,如果key存在則不進(jìn)行插入柿究,防止覆蓋 -
mset key1 value1 key2 value2 key3 value3 ...
批量設(shè)置key和value的值
mget key1 key2 key3...
批量獲取key的值
msetnx key1 value1 key2 value2 key3 value3 ...
如果有一個(gè)key已經(jīng)存在邮旷,那么這個(gè)命令將不會(huì)把數(shù)據(jù)插進(jìn)去,如果key都不存在才會(huì)把所有的都插進(jìn)去蝇摸。
4. redis列表(List :?jiǎn)沃刀鄓alue)
lpush key value1 value2 value3 ... valuen
從左邊添加(先進(jìn)后出)
rpush key value1 value2 value3 ... valuen
從右邊添加(先進(jìn)先出)
lrange key 0 -1
將key所有的value都列出婶肩,如果是lpush的,列出的順序應(yīng)該是valuen ... value3 value2 value1;如果是rpush 的貌夕,列出的順序?qū)⑹牵簐alue1 value2 value3 ... valuenlpop key
:取棧頂?shù)脑爻鰲?br>rpop key
:取棧底的元素出棧lindex key 下標(biāo)
:按照索引的下標(biāo)獲取元素律歼,從上往下獲取的llen key
:獲取這個(gè)key的value的長(zhǎng)度-
lrem key n個(gè) value
:刪除list中的n個(gè)value;如lrem list1 3 ttt
就是將list1中value為ttt的刪除掉3個(gè)蜂嗽。如下圖: -
ltrime key 起始值 終止值
:將key中的value從起始值開始苗膝,到終止值結(jié)束截取出來重新賦值給key;如下圖: -
rpoplpush 源list 目的list
將源list的棧底元素移動(dòng)到目的list的棧頂中去,如下圖: lset key index value
給index位置的值重新賦值為valuelinsert key before/after value 值
:在value前面或者后面插入一個(gè)值
5. redis集合(Set:?jiǎn)沃刀鄓alue)
-
sadd key value1 value2 value3 ... valuen
新增set集合(重復(fù)的數(shù)據(jù)會(huì)過濾掉)
smembers key
查看所有的value
sismember key value
: 在key這個(gè)集合中是否存在value這個(gè)值 -
scard key
: 獲取集合里面的元素個(gè)數(shù) -
srem key value
: 刪除集合中的某個(gè)value -
srandmember key :整數(shù)n
:在key這個(gè)集合中隨機(jī)的出n個(gè)value(用來抽獎(jiǎng)) -
spop key
:隨機(jī)出棧 -
smove key1 key2 key1里面的某個(gè)值
:將key1里面的某個(gè)值移到key2中去 -
sdiff key1 key2
: 獲取key1和key2 的差集(在key1中并且不在key2中的值) -
sinter key1 key2
: 獲取key1和key2的交集(在key1中并且又在key2中的值) -
sunion key1 key2
: 獲取key1和key2的并集(在key1中或者在key2中的值)
6. redis哈希(hash:KV模式不變辱揭,但是V是一個(gè)鍵值對(duì)《重要》)
-
hset key field value;
:新增key下面的field下的value值
hget key field
:獲取key下面的field的值
hmset key field value [file value ....]
:批量新增key下面的field的值
hmget key field [field ...]
: 批量獲取多個(gè)key
hgetall key
:獲取key下面的所有值
hdel key field [field ...]
:刪除key下面的field离唐,可以刪除多個(gè);如下圖: -
hlen key
獲取這個(gè)這個(gè)key有多少個(gè)屬性 -
hexists key field
: 判斷這個(gè)field是否在這個(gè)key里面 -
hkeys key
:列出key下的所有field -
hvals key
:列出key下所有的value -
hincrby key field 整數(shù)n
:給field的value增加n(只能給整數(shù)遞增) -
hincrbyfloat key field 小數(shù)n
:給field的value增加小數(shù)n(只能給小數(shù)增加) -
hsetnx key field value
: 給key增加一個(gè)不存在的field问窃,如果存在此field亥鬓,將不能新增,可以防止覆蓋
7. redis有序集合Zset(sorted set:在set的基礎(chǔ)上加了一個(gè)score值)
-
zadd key score value[score value]
: 新增一個(gè)zset集合域庇,score是排序的值 -
zrange key 0 -1
: 查詢所有的value值 -
zrange key 0 -1 withscores
: 查詢所有value并且攜帶score -
zrangebyscore key min max
: 查詢score在min 和max之間的所有value嵌戈,包含min和max -
zrangebyscore key (min (max
加了'('這個(gè)符號(hào)后,就是不包含 -
zrangebyscore key min max limit offset count
:表示score在min和max之前的并且從offset開始查詢count條听皿,limit相當(dāng)于mysql的分頁 -
zrem key value
:刪除value這個(gè)元素 -
zcard key
: 統(tǒng)計(jì)value的個(gè)數(shù) -
zcount key min max
:統(tǒng)計(jì)在min-max區(qū)間的個(gè)數(shù) -
zrank key value
: 獲得value的下標(biāo)值 -
zscore key value
: 獲得value的score值 -
zrevrank key value
: 逆序獲得下標(biāo)值 -
zrevrange key 0 -1
:逆序輸出所有的value -
zrevrangebyscore key max min
:獲取min-max區(qū)間的所有value并倒序輸出
如下圖所示: