1. 程式人生 > >Redis的資料型別和常用操作

Redis的資料型別和常用操作

五大資料型別

字串:String

  1. String是Redis最基本的型別,一個Key對應一個Value
  2. String型別是二進位制安全的,意思是Redis的String可以包含任何資料,例如一張jpg格式的圖片或者一個序列化的物件
  3. 一個Redis的字串型別Value最多可以是512M

列表:List

  1. 字串列表,依照插入順序排序
  2. 資料結構為連結串列

集合:Set

  1. String型別的無序集合
  2. 通過HashTable實現

雜湊:Hash(類似於Java中的Map)

  1. 一個鍵值對集合
  2. hash是一個String型別的field和value的對映表,hash特別適用於儲存物件
  3. 類似於Java中的Map(String,Object)

有序集合:Zset(sorted set)

  1. Zset和Set一樣是String型別元素的集合,且不允許重複
  2. 與Set不同的是每一個元素前都會有一個double型別的分數
  3. 雖然元素是惟一的,但是分數可以重複

Redis常見資料型別操作命令

Redis鍵:Key

命令 作用
keys * 獲取當前資料庫的所有key
exists key 判斷指定的key是否存在,1代表存在,0代表不存在
expire key s 為指定的key設定生命週期為s秒,s秒之後該key自動銷燬
ttl key 檢視指定的key生命週期剩餘時間,若為-1則永不過期,為-2則是已經過期
move key db 將key移動到指定的資料庫,並將當前庫中的記錄刪除
del key 刪除指定的key

Redis字串:String

命令 作用
append key newValue 在key對應的value後面追加值,追加的值為newValue
strlen key 獲取key對應的value的長度
incr key 將key對應的value的值加1,value的型別需要為int
decr key 將key對應的value的值減1,value的型別需要為int
incrby key x 將key對應的value的值加x,value的型別需要為int
decrby key x 將key對應的value的值減x,value的型別需要為int
getrange key begin end 擷取並返回key對應的value的值,擷取範圍為[begin,end]
setrange key index newValue 將key對應value的指定範圍內的值重置為newValue,範圍的開始為index
setex key s value 新增key:value,生命週期為s秒
setnx key value 如果key在當前資料庫不存在則新增key:value
mset 批量增加key:value
mget 批量獲取value
msetnx 批量設定,如果批量的key中有一個存在的,則全部都不能新增
程式碼示例
127.0.0.1:6379> set k1 1
OK
127.0.0.1:6379> incr k1
(integer) 2
127.0.0.1:6379> get k1
"2"
127.0.0.1:6379> incr k1
(integer) 3
127.0.0.1:6379> incrby k1 2
(integer) 5
127.0.0.1:6379> decrby k1 4
(integer) 1
127.0.0.1:6379> append k1 2345678
(integer) 8
127.0.0.1:6379> strlen k1
(integer) 8
127.0.0.1:6379> get k1
"12345678"
127.0.0.1:6379> getrange k1 0 3
"1234"
127.0.0.1:6379> setrange k1 0 xx
(integer) 8
127.0.0.1:6379> get k1
"xx345678"
127.0.0.1:6379> setex k2 10 v2
OK
127.0.0.1:6379> ttl k2
(integer) 6
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> setnx k3 v4
(integer) 0
127.0.0.1:6379> mset 1 1 2 2 3 3 4 4
OK
127.0.0.1:6379> mget 1 2 3 4
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> msetnx 5 5 6 6
(integer) 1
127.0.0.1:6379> msetnx 5 5 6 6
(integer) 0
127.0.0.1:6379>

Redis列表:List

命令 作用
lpush key [value] 從左邊開始將value壓入列表key,相當於棧
rpush key [value] 從右邊開始將rtvalue壓入列表key,相當於佇列
lrange key start end 從左邊第start位到end位獲取列表key的值,若end為-1相當於到列表尾部
lpop key 彈出左邊第一位的值
rpop key 彈出右邊第一位的值
lindex key i 取出列表key左邊第i為的值
llen key 獲取列表key的長度
lrem key n value 刪除列表key中n個value
ltrim key begin end 擷取列表key從begin到end的值,再賦值給key
rpoplpush k1 k2 取出k1的尾部新增到k2的頭部
lset key index value 將列表key的第index為賦值為value
linsert key before/end i value 在列表第i位之前/之後插入value

Redis集合:Set

命令 作用
sadd key [value] 增加一個set集合
smembers key 列出集合key的所有元素
sismember key value 判斷value是否是集合key的一個元素
srandmember key n 隨機獲取集合key的n的元素
spop key n 隨機彈出集合key的n個元素
srem key value 刪除集合key中value元素
smove k1 k2 value 將集合k1中的元素移到k2
sunion k1 k2 求k1與k2的並集
sdiff k1 k2 求k1與k2的差集
sinter k1 k2 求k1與k2的交集

Redis雜湊:Hash

命令 作用
hset key field value 在雜湊key中新增鍵值對key:value
hget key field 得到雜湊key中鍵為field的值
hmset key [field value] 在雜湊key中批量設定鍵值對
hmget key [field] 批量得到雜湊key中的值
hgetall key 得到雜湊key中所有的鍵值對
hlen key 得到雜湊key的長度
hexists key field 判斷鍵field在雜湊key中是否存在
hkeys key 得到雜湊key中所有的鍵
hvals key 得到雜湊key中所有的value
hincrby key field n 將雜湊key中鍵為field的值加n
hincrbyfloat key field x 將雜湊key中鍵為field的值加x,x可以是浮點數
hsetnx key field value 在雜湊key中新增鍵值對key:value,若key存在則新增失敗

Redis有序集合:Zset

命令 作用
zadd key [score value] 在有序集合Zset中新增 [分數 元素]
zrange key start end 遍歷有序集合key中的元素
zrangebyscore key start end 根據分數遍歷有序集合Zset中的分數和元素
zrem key score 根據分數刪除有序集合Zset中的元素