一、五大常用數據類型
String、Hash、List、Set、Zset
- Hash是一個鍵值對集合,適合用於存儲對象,類似於Java裏面的Map
- List是簡單的字符串列表,可以添加一個元素到列表的頭部或者尾部,底層實際是個鏈表
- Zset與set相比的區別是每個元素都會關聯一個double類型的分數,通過分數來爲集合中的成員進行從小到大的排序,Zset的成員是唯一的,但分數卻可以重複
二、常用命令
1、key
-
keys *
:查詢所有key -
exists key(名字)
:查看某個key是否存在 -
move key(名字) db
:移除db庫的某個key -
expire key(名字) seconds(秒)
:爲給定的key設置過期時間 -
ttl key(名字)
:查詢還有多少秒過期,-1表示永不過期,-2表示已過期 -
type key(名字)
:查看某個key是什麼類型
2、字符串(String)
-
set k1 v1/get k1
:設置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(必須要是數字) -
getrange k1 s e
:獲取k1中s到e範圍的值,如果是-1則到尾部 -
setrange k1 s value
:在索引值爲s開始的值覆蓋爲value(範圍覆蓋) -
setex k1 s v
:爲k1賦值v並設置能存活s秒 -
setnx k1 v1
:如果不存在才設置值,存在則設置失敗 -
mset k1 v1 k2 v2....
:批量設值
例如mset k1 v1 k2 v2 k3 v3
,給k1,k2,k3設值爲v1,v2,v3 -
mget k1(鍵) k2(鍵)...
:批量獲取
例如mget k1 k2 k3
,分別獲取key爲k1,k2,k3的值 -
msetnx k1 v1 k2 v2...
:批量設值,但是如果其中有一個已經存在,那則全部都不會設置成功
3、List
-
lpush 鍵 值1 值2...
:在一個鍵爲list裏面插入值(後進先出),即放在頂部 -
lrange 鍵 [範圍]
:在一個範圍內取出鍵的值
例如lrange list01 0 3
取出list01中0-3的值 -
rpush 鍵 值1 值2...
:在一個鍵爲list裏面插入值(先進先出),即放在底部 -
lpop 鍵
:彈出頂部的值 -
rpop 鍵
:彈出底部的值 -
lindex 鍵 索引
:按照索引下標獲得元素(從上到下)
例如現在有一個list01是2,3,4。則lindex list01 2
結果爲4,lindex list01 1
結果爲3。 -
llen 鍵
:獲取長度 -
lrem 鍵 n value
:刪除n個value
例如lrem list01 2 3
意思是在list01中刪除2個value爲3的。 -
ltrim key sindex eindex
:截取key中從sindex開始到eindex結束的值,再賦值給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),值不允許重複 -
smembers key
:取出key集合中的所有值 -
sismember key value
:查看key集合中是否有值爲value的 -
scard key
:獲取key集合中元素個數 -
srem key value1
:刪除key集合中值爲value1的元素 -
srandmember key num
:在key集合中隨機出num個數值 -
spop key
:在key集合中隨機出棧 -
smove key1 key2 value
:將key1裏的值爲value的賦給key2 - 數學集合類:差集(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(浮點數) -
hsetnx 某個哈希 key value
:如果不存在key才插入
6、Zset
在set基礎上加上一個score值,之前set是k1 v1 v2 v3,現在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中獲取分數爲sscore到escore的值,如果在分數前加(則表示不包含,沒加則表示包含該分數,還可以加上limit index num從結果集裏面的第index個開始來截取num個 -
zrem zset1 某score下對應的value值
:刪除元素 -
zcard zset1
:獲取zset1的數量(值和分數是爲一體的,即只算一個) -
zcount zset1 score
區間:獲取zset在score區間內的數量
例如zcount zset1 60 80
獲取zset在60-80分裏面的數量 -
zrank zset1 value
:獲取zset1的value對應的下標 -
zscore zset1 value
:獲取zset1的value對應的分數 -
zrevrank zset1 value
:逆序獲取zset1的value對應的下標 -
zrevrange zset1 s e
:逆序獲取zset1從s到e的值,e如果爲-1表示獲取到結尾 -
zrevrangebycore zset1 score1 score2
:逆序獲取zset1的分數範圍在score1到score2(score1大於score2)的值