redis支持的數據類型很是豐富,有String、list、set、hash、zset、hyperLogLog、georedis
1. String類型bash
redis中的字符串就是一個由字節組成的序列。字符串能夠儲存一下3種類型的數據app
字節串spa
整數命令行
浮點數code
對整數和浮點數的操做索引
命令INCR,將存儲的值加上1rem
127.0.0.1:6379> set s_incr 0 OK 127.0.0.1:6379> incr s_incr (integer) 1 127.0.0.1:6379> incr s_incr (integer) 2
命令DECR,將存儲的值減上1字符串
127.0.0.1:6379> set s_decr 10 OK 127.0.0.1:6379> decr s_decr (integer) 9 127.0.0.1:6379> decr s_decr (integer) 8
命令INCRBY,將存儲的值加上整數get
127.0.0.1:6379> set s_incrby 0 OK 127.0.0.1:6379> incrby s_incrby 5 (integer) 5 127.0.0.1:6379> incrby s_incrby 2 (integer) 7
命令DECRBY,將存儲的值減上整數
127.0.0.1:6379> set s_decrby 10 OK 127.0.0.1:6379> decrby s_decrby 2 (integer) 8 127.0.0.1:6379> decrby s_decrby 3 (integer) 5
命令INCRBYFLOAT,將存儲的值加上浮點數(2.6版本以上使用)
127.0.0.1:6379> set s_incrbyfloat 2 OK 127.0.0.1:6379> incrbyfloat s_incrbyfloat 1.5 "3.5" 127.0.0.1:6379> incrbyfloat s_incrbyfloat 0.6 "4.1"
對字符串的操做
命令APPEND,將值value追加到給定鍵當前存儲的值的末尾
127.0.0.1:6379> set s_append leo OK 127.0.0.1:6379> append s_append _111 (integer) 7 127.0.0.1:6379> get s_append "leo_111"
命令GETRANGE,獲取start至end範圍內全部字符組成的子串,包括start和end在內(該命令是由SUBSTR命令更名而來,2.6以上版本仍是推薦使用GETRANGE命令)
127.0.0.1:6379> getrange s_append 1 3 "eo_"
命令SETRANGE,將從start偏移量開始的子串設置爲給定值
127.0.0.1:6379> setrange s_append 4 222 (integer) 7 127.0.0.1:6379> get s_append "leo_222"
命令STRLEN,得到該鍵保存的value的長度
127.0.0.1:6379> strlen s_append (integer) 7
命令GET,得到該鍵保存的值
127.0.0.1:6379> get s_append "leo_222"
命令GETSET,設置一個字符類型的值,而且返回他以前的值
127.0.0.1:6379> getset s_append leo_333 "leo_222" 127.0.0.1:6379> getset s_append1 leo_333(設置一個不存在的key會返回nil) (nil) 127.0.0.1:6379> get s_append1 "leo_333"
命令MGET,根據提供的多個鍵返回鍵對應的多個值
127.0.0.1:6379> set s_append1 leo_444 OK 127.0.0.1:6379> mget s_append s_append1 1) "leo_333" 2) "leo_444"
命令MSET,設置多個鍵值對
127.0.0.1:6379> mset s_append2 leo_555 s_append3 leo_666 OK 127.0.0.1:6379> mget s_append2 s_append3 1) "leo_555" 2) "leo_666"
命令MSETNX,設置多個鍵值對,若是鍵不存在的時候設置成功(若是多個鍵值對有一個不知足要求,就所有設置不成功)
127.0.0.1:6379> msetnx s_append3 leo_777 s_append4 leo_888 (integer) 0 127.0.0.1:6379> mget s_append3 s_append4 1) "leo_666" 2) (nil) 127.0.0.1:6379> msetnx s_append5 leo_777 s_append4 leo_888 (integer) 1 127.0.0.1:6379> mget s_append5 s_append4 1) "leo_777" 2) "leo_888"
命令PSETEX,給一個鍵設置值和過時的毫秒數
127.0.0.1:6379> psetex s_ex 5000 test OK 127.0.0.1:6379> get s_ex "test" 127.0.0.1:6379> get s_ex (nil)
命令SET,給一個鍵設置字符串值,命令格式set key value [EX seconds] [PX milliseconds] [NX|XX]
127.0.0.1:6379> set s_set test1 EX 20 OK 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set "test1" 127.0.0.1:6379> get s_set (nil) 127.0.0.1:6379> set s_setml test EX 10 PX 5000(PX和EX參數不能同時設置) (error) ERR syntax error 127.0.0.1:6379> set s_setml test PX 5000(這裏手慢了一點,不過確實生效了) OK 127.0.0.1:6379> get s_setml (nil) 127.0.0.1:6379> set s_nx test XX(該鍵若是存在的時候纔會設置成功) (nil) 127.0.0.1:6379> get s_nx (nil) 127.0.0.1:6379> set s_nx test NX(該鍵若是不存在的時候纔會設置成功) OK 127.0.0.1:6379> set s_nx test NX (nil)
命令SETEX,給鍵設置值和過時時間
127.0.0.1:6379> setex s_ex 5 aaa OK 127.0.0.1:6379> get s_ex "aaa" 127.0.0.1:6379> get s_ex (nil)
命令SETNX,給鍵設置值,只有鍵不存在的時候才能成功
127.0.0.1:6379> setnx s_nx test (integer) 0 127.0.0.1:6379> setnx s_nx test (integer) 0 127.0.0.1:6379> get s_nx "test"
2. list類型
redis中一個列表結構能夠有序的存儲多個字符串,而且能夠重複。
命令RPUSH,將給定值推入列表的右端
127.0.0.1:6379> rpush l_rpush leo (integer) 1 127.0.0.1:6379> rpush l_rpush leo1 (integer) 2 127.0.0.1:6379> rpush l_rpush leo (integer) 3
命令LRANGE,獲取列表在給定範圍上的全部值
127.0.0.1:6379> lrange l_rpush 0 -1(0 -1表明獲取列表中的全部值) 1) "leo" 2) "leo1" 3) "leo" 127.0.0.1:6379> lrange l_rpush 0 1 1) "leo" 2) "leo1"
命令LINDEX,獲取列表在給定位置上的單個元素
127.0.0.1:6379> lindex l_rpush 1 "leo1" 127.0.0.1:6379> lindex l_rpush 2 "leo"
命令LPOP,從列表的左端彈出一個值,並返回被彈出的值
127.0.0.1:6379> lpop l_rpush "leo" 127.0.0.1:6379> lrange l_rpush 0 -1 1) "leo1" 2) "leo"
命令BLPOP,從列表的左端彈出一個值,並返回被彈出的值,若是列表爲空就會阻塞,直到列表中存在值
127.0.0.1:6379> blpop l_bl 20(20爲等待超時時間,若是超時會返回nil) (nil)
先執行
127.0.0.1:6379> blpop b_bl 20
而後從新開一個命令行窗口執行
127.0.0.1:6379> lpush b_bl 1 (integer) 1
能夠看到BLPOP命令正確返回了數據
127.0.0.1:6379> blpop b_bl 20 1) "b_bl" 2) "1" (3.63s)
命令BLPOP,從列表的右端彈出一個值,並返回被彈出的值,若是列表爲空就會阻塞,直到列表中存在值
命令BRPOPLPUSH,從原列表中彈出最右邊的值,而且推入到另外一個列表的最左邊
127.0.0.1:6379> lpush l_source 1 2 3 (integer) 3 127.0.0.1:6379> lpush l_dest 4 5 6 (integer) 3 127.0.0.1:6379> brpoplpush l_source l_dest 20 "1" 127.0.0.1:6379> lrange l_dest 0 -1 1) "1" 2) "6" 3) "5" 4) "4"
命令LINDEX,從列表中的某個索引得到這個元素
127.0.0.1:6379> LINDex l_dest 2 "5"
命令LINSERT,從列表中另一個元素的前面或者後面插入一個元素
127.0.0.1:6379> linsert l_dest before 6 2 (integer) 5 127.0.0.1:6379> lrange l_dest 0 -1 1) "1" 2) "2" 3) "6" 4) "5" 5) "4"
命令LLEN,得到list的長度
127.0.0.1:6379> llen l_dest (integer) 5
命令LPOP,從列表左邊彈出一個元素
127.0.0.1:6379> lpop l_dest "1"
命令LPUSH,從列表左邊推入一個元素
127.0.0.1:6379> lpush l_dest 0 (integer) 5 127.0.0.1:6379> lrange l_dest 0 -1 1) "0" 2) "2" 3) "6" 4) "5" 5) "4"
命令LPUSHX,若是鍵存在的話,就從左邊推入一個元素
127.0.0.1:6379> lpushx l_dest1 123 (integer) 0 127.0.0.1:6379> lpushx l_dest 123 (integer) 6 127.0.0.1:6379> lrange l_dest 0 -1 1) "123" 2) "0" 3) "2" 4) "6" 5) "5" 6) "4"
命令LREM,從列表左邊移除幾個給定的元素
127.0.0.1:6379> lrange l_dest 0 -1 1) "4" 2) "0" 3) "123" 4) "0" 5) "2" 6) "6" 7) "5" 8) "4" 127.0.0.1:6379> lrange l_dest 0 -1(最左邊的0被移除) 1) "4" 2) "123" 3) "0" 4) "2" 5) "6" 6) "5" 7) "4" 127.0.0.1:6379> lpush l_dest 4 (integer) 8 127.0.0.1:6379> lrem l_dest 2 4(移除了左邊的兩個4) (integer) 2 127.0.0.1:6379> lrange l_dest 0 -1 1) "123" 2) "0" 3) "2" 4) "6" 5) "5" 6) "4"
命令LSET,給某個列表的第幾個索引的元素設置值
127.0.0.1:6379> lset l_dest 1 000 OK 127.0.0.1:6379> lrange l_dest 0 -1 1) "123" 2) "000" 3) "2" 4) "6" 5) "5" 6) "4"
命令LTRIM,修剪列表
127.0.0.1:6379> lrange l_dest 0 -1 1) "123" 2) "000" 3) "2" 4) "6" 5) "5" 6) "4" 127.0.0.1:6379> ltrim l_dest 1 2(只保留index1到index2之間的元素) OK 127.0.0.1:6379> lrange l_dest 0 -1 1) "000" 2) "2"
命令RPOP,從右側彈出元素
127.0.0.1:6379> lrange l_dest 0 -1 1) "000" 2) "2" 127.0.0.1:6379> rpop l_dest "2" 127.0.0.1:6379> lrange l_dest 0 -1 1) "000"
命令RPOPLPUSH,從原列表的右側彈出元素,加入到給定列表的左邊
127.0.0.1:6379> rpoplpush l_dest l_source "000" 127.0.0.1:6379> lrange l_dest 0 -1 (empty list or set) 127.0.0.1:6379> lrange l_source 0 -1 1) "000" 2) "3" 3) "2"
命令RPUSHX,若是列表存在就從右側推入元素
127.0.0.1:6379> rpushx l_dest1 haha (integer) 0 127.0.0.1:6379> rpushx l_source haha (integer) 4