一、五大常用數(shù)據(jù)類型
String、Hash、List、Set、Zset
- Hash是一個鍵值對集合,適合用于存儲對象,類似于Java里面的Map
- List是簡單的字符串列表,可以添加一個元素到列表的頭部或者尾部,底層實際是個鏈表
- Zset與set相比的區(qū)別是每個元素都會關(guān)聯(lián)一個double類型的分?jǐn)?shù),通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序,Zset的成員是唯一的,但分?jǐn)?shù)卻可以重復(fù)
二、常用命令
1、key
-
keys *:查詢所有key -
exists key(名字):查看某個key是否存在 -
move key(名字) db:移除db庫的某個key -
expire key(名字) seconds(秒):為給定的key設(shè)置過期時間 -
ttl key(名字):查詢還有多少秒過期,-1表示永不過期,-2表示已過期 -
type key(名字):查看某個key是什么類型
2、字符串(String)
-
set k1 v1/get k1:設(shè)置k1為v1 / 獲取k1 -
del s1:刪除s1 -
append k1 v1:在k1后面插入v1(原來的值還在) -
strlen k1:獲取k1的長度 -
incr k1/decr k1/incrby k1 num/decrby k1 num:遞增/遞減/增num/減num(必須要是數(shù)字) -
getrange k1 s e:獲取k1中s到e范圍的值,如果是-1則到尾部 -
setrange k1 s value:在索引值為s開始的值覆蓋為value(范圍覆蓋) -
setex k1 s v:為k1賦值v并設(shè)置能存活s秒 -
setnx k1 v1:如果不存在才設(shè)置值,存在則設(shè)置失敗 -
mset k1 v1 k2 v2....:批量設(shè)值
例如mset k1 v1 k2 v2 k3 v3,給k1,k2,k3設(shè)值為v1,v2,v3 -
mget k1(鍵) k2(鍵)...:批量獲取
例如mget k1 k2 k3,分別獲取key為k1,k2,k3的值 -
msetnx k1 v1 k2 v2...:批量設(shè)值,但是如果其中有一個已經(jīng)存在,那則全部都不會設(shè)置成功
3、List
-
lpush 鍵 值1 值2...:在一個鍵為list里面插入值(后進(jìn)先出),即放在頂部 -
lrange 鍵 [范圍]:在一個范圍內(nèi)取出鍵的值
例如lrange list01 0 3取出list01中0-3的值 -
rpush 鍵 值1 值2...:在一個鍵為list里面插入值(先進(jìn)先出),即放在底部 -
lpop 鍵:彈出頂部的值 -
rpop 鍵:彈出底部的值 -
lindex 鍵 索引:按照索引下標(biāo)獲得元素(從上到下)
例如現(xiàn)在有一個list01是2,3,4。則lindex list01 2結(jié)果為4,lindex list01 1結(jié)果為3。 -
llen 鍵:獲取長度 -
lrem 鍵 n value:刪除n個value
例如lrem list01 2 3意思是在list01中刪除2個value為3的。 -
ltrim key sindex eindex:截取key中從sindex開始到eindex結(jié)束的值,再賦值給key -
rpoplpush 源列表 目的列表:從源列表中的底部彈出一個值再放入目的列表的頂部 -
lset key index value:對key的索引為index的值改為value -
linsert key before/after 值1 值2:在值1的前面/后面插入值2
例如linsert list01 before x java在x的前面插入java
4、集合(Set)
-
sadd key value1 value2 value3:在key的集合中添加值(value1,value2,value3),值不允許重復(fù) -
smembers key:取出key集合中的所有值 -
sismember key value:查看key集合中是否有值為value的 -
scard key:獲取key集合中元素個數(shù) -
srem key value1:刪除key集合中值為value1的元素 -
srandmember key num:在key集合中隨機(jī)出num個數(shù)值 -
spop key:在key集合中隨機(jī)出棧 -
smove key1 key2 value:將key1里的值為value的賦給key2 - 數(shù)學(xué)集合類:差集(sdiff)、交集(sinter)、并集(sunion)
差集set1 set2:在第一個set里面而不在后面任何一個set里面的值
5、Hash
-
hset 某個哈希 key1 value1:在某個哈希中插入一個鍵值對 -
hget 某個哈希 key1:在某個哈希中獲取鍵為key1的值 -
hmset 某個哈希 key1 value1 key2 value2 ...:批量插入鍵值對 -
hmget 某個哈希 key1 key2 ...:批量獲取鍵值對 -
hgetall 某個哈希:獲取某個哈希里面所有的鍵值對 -
hdel 某個哈希 key:刪除某個哈希里面鍵為key的值 -
hlen 某個哈希:獲取長度 -
hexists 某個哈希 key:查看某個哈希中是否存在鍵為key的 -
hkeys 某個哈希:獲取某個哈希里面所有的key -
hvals 某個哈希:獲取某個哈希里面所有的value -
hincrby 某個哈希 key num:將某個哈希里面鍵為key的值遞增num -
hincrbyfloat 某個哈希 key num:將某個哈希里面鍵為key的值遞增num(浮點數(shù)) -
hsetnx 某個哈希 key value:如果不存在key才插入
6、Zset
在set基礎(chǔ)上加上一個score值,之前set是k1 v1 v2 v3,現(xiàn)在zset是k1 score1 v1 score2 v2。
-
zadd zset1 score1 value1 score2 value2 ...:在zset1中批量添加值。 -
zrange zset1 index end:從index到end獲取zset1中的所有值(沒有score),如果end是-1則表示所有 -
zrange zset1 index end withscores: 從index到end獲取zset1中的所有值(有score),如果end是-1則表示所有 -
zrangebyscore zset1 sscore escore:從zset1中獲取分?jǐn)?shù)為sscore到escore的值,如果在分?jǐn)?shù)前加(則表示不包含,沒加則表示包含該分?jǐn)?shù),還可以加上limit index num從結(jié)果集里面的第index個開始來截取num個 -
zrem zset1 某score下對應(yīng)的value值:刪除元素 -
zcard zset1:獲取zset1的數(shù)量(值和分?jǐn)?shù)是為一體的,即只算一個) -
zcount zset1 score區(qū)間:獲取zset在score區(qū)間內(nèi)的數(shù)量
例如zcount zset1 60 80獲取zset在60-80分里面的數(shù)量 -
zrank zset1 value:獲取zset1的value對應(yīng)的下標(biāo) -
zscore zset1 value:獲取zset1的value對應(yīng)的分?jǐn)?shù) -
zrevrank zset1 value:逆序獲取zset1的value對應(yīng)的下標(biāo) -
zrevrange zset1 s e:逆序獲取zset1從s到e的值,e如果為-1表示獲取到結(jié)尾 -
zrevrangebycore zset1 score1 score2:逆序獲取zset1的分?jǐn)?shù)范圍在score1到score2(score1大于score2)的值