Redis系列二:Redis支持的數據類型和使用方法(一)


一、String類型
String類型是二進制安全的,使用String類型緩存一些靜態文件,如圖片、CSS,可以提高網站的運行速度
1)常用命令
127.0.0.1:6379> set booka "Redis"
OK
127.0.0.1:6379> setnx booka "test"
(integer) 0
127.0.0.1:6379> get booka
"Redis"
127.0.0.1:6379> getset bookb "php"
(nil)
127.0.0.1:6379> getset booka "php"
"Redis"
127.0.0.1:6379> get booka
"php"
127.0.0.1:6379>

set booka "Redis" : 設置key為booka,值為Redis

setnx booka "test":setnx命令,如果booka不存在,則設置key為booka,值為test的string類型的值;如果booka存在則返回0
get booka:獲取key為booka的值
getset bookb "php":getset命令,先獲取key為bookb的key值,如果沒有則返回nil,如果有則將key為bookb的value設置為php
 
127.0.0.1:6379> mset test1 "hello" test2 "hello2" test3 "hello3"
OK
127.0.0.1:6379> get test3
"hello3"
127.0.0.1:6379> get test2
"hello2"
127.0.0.1:6379> get test3
"hello3"
127.0.0.1:6379> mget test1 test2 test3
1) "hello"
2) "hello2"
3) "hello3"
127.0.0.1:6379>

mset 命令:一次設置多個key值,成功返回ok,表示所有值都設置了;失敗返回0,表示沒有值被設置

mget命令:一次獲取多個key值,如果對應的key不存在則返回nil
 
127.0.0.1:6379> mget test1 test2 test3
1) "hello"
2) "hello2"
3) "hello3"
127.0.0.1:6379> msetnx test3 "msetnx" test4 "hello4"
(integer) 0
127.0.0.1:6379> mget test1 test2 test3 test4
1) "hello"
2) "hello2"
3) "hello3"
4) (nil)
127.0.0.1:6379> msetnx test5 "msetnx" test4 "hello4"
(integer) 1
127.0.0.1:6379> mget test4 test5
1) "hello4"
2) "msetnx"
127.0.0.1:6379>

msetnx命令:一次設置多個key值,如果key有存在的,返回0;否則返回1

 
127.0.0.1:6379> set int_key 1
OK
127.0.0.1:6379> get int_key
"1"
127.0.0.1:6379> incr int_key
(integer) 2
127.0.0.1:6379> get int_key
"2"
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> get test1
"hello"
127.0.0.1:6379> 
127.0.0.1:6379> incr test1
(error) ERR value is not an integer or out of range
127.0.0.1:6379> 

incr 命令對key值加1,並返回新值;如果incr不是一個int的value則會返回錯誤;incr一個不存在的key,則設置key的value為1

decr命令和incr命令想法,對key減一
 
127.0.0.1:6379> get int_key
"2"
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> incrby int_key 2
(integer) 4
127.0.0.1:6379> get int_key
"4"
127.0.0.1:6379> 

incrby 命令,對key值追加一個指定的整數,key不存在時設置key,並認為原來的value為0

decrby命令和incrby相反
 
二、List類型
  list類型指的是key對應的value是一個雙向鏈表結構,所以list類型提供鏈表支持的所有操作。
127.0.0.1:6379> lpush list_key list_value    #向key對應的list頭部添加一個字符串
(integer) 1
127.0.0.1:6379> lpush list_key list_value_center #向key對應的list尾部添加一個字符串
(integer) 2
127.0.0.1:6379> 
127.0.0.1:6379> llen list_key #返回key對應的list的長度,如果key不存在返回0,如果key對應的類型不是list返回錯誤
(integer) 2
127.0.0.1:6379> lpop list_key #從list頭部刪除並返回刪除元素
"list_value_center"
127.0.0.1:6379> lpop list_key
"list_value"
127.0.0.1:6379> lpop list_key
(nil)
127.0.0.1:6379> llen list_key
(integer) 0
127.0.0.1:6379> lpush list_key list_value1
(integer) 1
127.0.0.1:6379> lpush list_key list_value2
(integer) 2
127.0.0.1:6379> lpush list_key list_value3
(integer) 3
127.0.0.1:6379> lpush list_key list_value4
(integer) 4
127.0.0.1:6379> lrange list_key 1 2 #返回key為list_key指定區間(1,2)的元素,下標從0開始,負值表示從列表的尾部開始計算,-1表示倒數第一個元素,key不存在返回空列表
1) "list_value3"
2) "list_value2"
127.0.0.1:6379> ltrim list_key 2 3 #截取key為list_key指定區間(2,3)的元素
OK
127.0.0.1:6379> lrange list_key 0 5
1) "list_value2"
2) "list_value1"
127.0.0.1:6379> lset list_key 2 hello #設置key為list_key指定下標2的value為hello
(error) ERR index out of range
127.0.0.1:6379> lset list_key 1 hello
OK
127.0.0.1:6379> lrange list_key 0 5
1) "list_value2"
2) "hello"
127.0.0.1:6379> 

另外列表還有下面幾個命令

rpop key:從list尾部刪除並返回刪除的元素
blpop key1 ... keyn timeout:從左到右掃描 key1 ... keyn ,返回對第一個非空的list進行lpop操作並返回,如果所有的list都是空或者不存在,阻塞timeout秒,timeout為0表示
一直阻塞。阻塞時,如果有其他的客戶端對 key1 ... keyn 中任意一個key進行push操作,阻塞解除並返回。如果超時則返回nil
brpop  key1 ... keyn timeout:功能與blpop類似,blpop從頭部刪除,brpop從尾部刪除
 
三、set類型
set類型是一種無序集合。set數據類型可以快速查找元素是否存在,用於記錄一些不能重復的數據。如網站用戶名不能重復。
127.0.0.1:6379> sadd set_key 1 #添加一個string元素到key為set_key對應的集合中
(integer) 1
127.0.0.1:6379> scard set_key #返回set元素的個數,如果set為空或者key不存在則返回0
(integer) 1
127.0.0.1:6379> sadd set_key 2
(integer) 1
127.0.0.1:6379> scard set_key
(integer) 2
127.0.0.1:6379> sismember set_key 3 #判斷3是否存在於無序集合set_key中,存在返回1,不存在或者key對應的set集合不存在則返回0
(integer) 0
127.0.0.1:6379> sismember set_key 1
(integer) 1
127.0.0.1:6379> smembers set_key #返回key對應set的所有元素,結果是無序的
1) "1"
2) "2"
127.0.0.1:6379> sadd set_key 3
(integer) 1
127.0.0.1:6379> smembers set_key
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> srem set_key 2 #從set_key對應的集合中移除2這個元素,如果2不存在或者set_key不存在則返回0
(integer) 1
127.0.0.1:6379> smembers set_key
1) "1"
2) "3"
127.0.0.1:6379> 

其他命令

spop key:刪除並返回key對應的集合中隨機一個元素
srandmember key:隨機取集合中的一個元素,但不刪除元素
smove srckey dstkey member:從scrkey對應的集合中移除member並添加到dstkey對應的集合中
sinter key1 key2 ... key3:返回所有給定key的交集
sinterstore dstkey key1 key2 ... key3:同sinter,並將交集存到dstkey對應的集合中
sunion key1 key2 ... key3:返回所有給定key的並集
sunionstore dstkey  key1 key2 ... key3:同sunion,並把並集保存到dstkey 對應的集合中
sdiff key1 key2 ... key3:返回所有給定key的差集
sdiffstore dstkey key1 key2 ... key3:同sdiff ,並把並集保存到dstkey 對應的集合中
 
Redis系列二:Redis支持的數據類型和使用方法(一)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM