1. redis的五大數(shù)據(jù)類(lèi)型
- String(字符串): String 是redis最基本的數(shù)據(jù)類(lèi)型,一個(gè)key對(duì)應(yīng)一個(gè)value;String是二進(jìn)制安全的;’redis的String可以包含任何的數(shù)據(jù)(jpg圖像和序列化的對(duì)象等都可以包含);注意:一個(gè)redis中的字符串value最多可以存512M
- Hash(哈希,類(lèi)似Map): redis hash是一個(gè)鍵值對(duì)集合;是一個(gè)String類(lèi)型的field和value的映射表 ,hash適合用于存儲(chǔ)對(duì)象;類(lèi)似Java里面的Map<String,Object>
- List(列表): redis列表是簡(jiǎn)單的字符串列表,按照插入的順序排序,可以添加一個(gè)元素到列表的頭或者尾(注意:列表的底層是鏈表)
- Set(集合): Set是String類(lèi)型的無(wú)序無(wú)重復(fù)的集合。他是通過(guò)HashTable實(shí)現(xiàn)的。
- Zset(sorted set: 有序集合): 和Set一樣無(wú)重復(fù)集合,不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類(lèi)型的分?jǐn)?shù)score;redis正式通過(guò)分?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è)庫(kù)去,例如move hello 7將key為hello的這個(gè)key 移動(dòng)到第8號(hào)庫(kù)。 -
expire key 秒鐘:為給定的key設(shè)置過(guò)期時(shí)間 -
ttl key:查看還有多少秒過(guò)期(-1表示永不過(guò)期,-2表示已過(guò)期) -
type key:查看key是什么類(lèi)型 -
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è),也就是說(shuō)輸出的是4個(gè)字符;
setrange: 用來(lái)替換字符;如setrange key 0 111: 表示從0個(gè)位置開(kāi)始替換value的值,替換前三個(gè)為111。如果此key的value是qwert,那么執(zhí)行了setrange key 0 111命令以后value就變成了 111rt。 -
setex key 秒 value: 設(shè)置key的同時(shí)為其設(shè)置過(guò)期時(shí)間;如setex abc 10 sssss設(shè)置key為abc,value為sssss的數(shù)據(jù)過(guò)期時(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è)。如下圖:lrem.png -
ltrime key 起始值 終止值:將key中的value從起始值開(kāi)始,到終止值結(jié)束截取出來(lái)重新賦值給key;如下圖:ltrime.png -
rpoplpush 源list 目的list將源list的棧底元素移動(dòng)到目的list的棧頂中去,如下圖:rpoplpush .png 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ì)過(guò)濾掉)
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(用來(lái)抽獎(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è);如下圖:set1.png -
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: 查詢(xún)所有的value值 -
zrange key 0 -1 withscores: 查詢(xún)所有value并且攜帶score -
zrangebyscore key min max: 查詢(xún)score在min 和max之間的所有value,包含min和max -
zrangebyscore key (min (max加了'('這個(gè)符號(hào)后,就是不包含 -
zrangebyscore key min max limit offset count:表示score在min和max之前的并且從offset開(kāi)始查詢(xún)count條,limit相當(dāng)于mysql的分頁(yè) -
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并倒序輸出
如下圖所示:zset1.pngzset2.png





