一、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支持的數據類型和使用方法(一)