Redis中key的特色json
Redis中的key是二進制安全的,意味着你可使用任何二進制序列做爲一個key,從「foo」這樣的字符串到JPEG文件的內容。空字符串也是一個有效的key(Redis keys are binary safe, this means that you can use any binary sequence as a key, from a string like "foo" to the content of a JPEG file. The empty string is also a valid key)。安全
key的其餘規則:app
字符串類型是Redis中最簡單的數據類型,Redis中值類型爲字符串時,最大不能超過512MB。Redis的字符串類型是二進制安全的,除了普通字符串(整型,浮點型,json,xml),還能夠存儲圖片、音視頻。ui
set key value [expiration EX seconds|PX milliseconds] [NX|XX]this
set
命令的幾個選項spa
EX seconds:爲鍵設置秒級過時時間code
PX milliseconds:爲鍵設置ms級過時時間視頻
NX:僅當key不存在時,能夠設置成功,用於新增xml
XX:僅當key存在時,能夠設置成功,用於更新索引
NX與XX參數示例:當key1
不存在時,使用XX參數set key1
失敗,經過NX參數set key1
成功,以後清空數據,再次使用NX參數,set key1
成功
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> set key1 value1 XX
(nil)
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> set key1 value2 NX
(nil)
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> set key1 value2 NX
OK
複製代碼
EX參數示例:設置key1
過時時間爲3s,以後經過ttl key1
獲取key1
的過時時間剩餘1s,1s以後,使用keys *
獲取全部的key
127.0.0.1:6379> set key1 value1 EX 3
OK
127.0.0.1:6379> ttl key1
(integer) 1
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
複製代碼
mset key value [key value ...]
示例:
127.0.0.1:6379> mset a 1 b 2 c 3
OK
127.0.0.1:6379> keys *
1) "a"
2) "b"
3) "c"
複製代碼
setex key seconds value
示例:
127.0.0.1:6379> setex key1 3 value1
OK
127.0.0.1:6379> ttl key1
(integer) 1
127.0.0.1:6379> keys *
(empty list or set)
複製代碼
setnx key value
示例:
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> setnx key1 value2
(integer) 0
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> setnx key1 value2
(integer) 1
複製代碼
示例:
get key
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> get key1
"value1"
複製代碼
mget key [key ...]
示例:
127.0.0.1:6379> mset a 1 b 2 c 3
OK
127.0.0.1:6379> mget a b c d
1) "1"
2) "2"
3) "3"
4) (nil)
複製代碼
自增操做
incr key
示例:當key不存在時,默認從0遞增,操做成功,返回最新的值
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> incr key1
(integer) 1
127.0.0.1:6379> incr key1
(integer) 2
127.0.0.1:6379> incr key1
(integer) 3
複製代碼
incrby key increment
示例:當key不存在時,默認key的值爲0,操做成功,返回最新的值
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> incrby key1 3
(integer) 3
127.0.0.1:6379> incrby key1 3
(integer) 6
127.0.0.1:6379> incrby key1 4
(integer) 10
複製代碼
自減操做
decr key
decrby key increment
浮點類型自增操做
incrbyfloat key increment
BITOP operation destkey key [key ...]
operation 能夠是 AND 、 OR 、 NOT 、 XOR 四種操做中的任意一種
BITOP AND destkey key [key ...] ,對一個或多個 key 求邏輯與,並將結果保存到 destkey
BITOP OR destkey key [key ...] ,對一個或多個 key 求邏輯或,並將結果保存到 destkey
BITOP XOR destkey key [key ...] ,對一個或多個 key 求邏輯異或,並將結果保存到 destkey
BITOP NOT destkey key ,對給定 key 求邏輯非,並將結果保存到 destkey
AND 示例:a
的ascii碼爲97(0110 0001
),b
的ascii碼爲98(0110 0010
),因此求與的結果是0110 0000
,即ascii碼爲96的字符("`")
127.0.0.1:6379> mset key1 a key2 b
OK
127.0.0.1:6379> BITOP AND key1 key1 key2
(integer) 1
127.0.0.1:6379> get key1
"`"
複製代碼
OR 示例:a|b=c
127.0.0.1:6379> mset key1 a key2 b
OK
127.0.0.1:6379> BITOP OR key1 key1 key2
(integer) 1
127.0.0.1:6379> get key1
"c"
複製代碼
XOR 示例:a^b=\x03
異或的規則是相同等於0,不一樣等於1,0110 0001^0110 0010=\x03
127.0.0.1:6379> mset key1 a key2 b
OK
127.0.0.1:6379> BITOP XOR key1 key1 key2
(integer) 1
127.0.0.1:6379> get key1
"\x03"
複製代碼
NOT 示例:a
按位取反,結果是\x9e
127.0.0.1:6379> set key1 a
OK
127.0.0.1:6379> BITOP NOT key1 key1
(integer) 1
127.0.0.1:6379> get key1
"\x9e"
複製代碼
SETBIT操做
setbit key offset value
示例:將a的從左到右第6位設置爲1,第7位設置爲0,則a -> b
127.0.0.1:6379> set key1 a
OK
127.0.0.1:6379> setbit key1 6 1
(integer) 0
127.0.0.1:6379> setbit key1 7 0
(integer) 1
127.0.0.1:6379> get key1
"b"
複製代碼
GETBIT操做
getbit key offset
示例:
127.0.0.1:6379> set key1 a
OK
127.0.0.1:6379> getbit key1 6
(integer) 0
127.0.0.1:6379> getbit key1 7
(integer) 1
複製代碼
BITCOUNT操做
含義:計算給定字符串中,被設置爲 1 的比特位的數量(索引的單位爲byte)
bitcount key [start end]
示例:
127.0.0.1:6379> set key1 ab
OK
127.0.0.1:6379> bitcount key1 0 1 #a和b中bit位爲1的數量
(integer) 6
127.0.0.1:6379> bitcount key1 0 0 #a中bit位爲1的數量
(integer) 3
127.0.0.1:6379> bitcount key1 0 -1 #end爲-1表示查找到最後一個字節
(integer) 6
複製代碼
append key value
示例:
127.0.0.1:6379> set key1 a
OK
127.0.0.1:6379> append key1 2
(integer) 2
127.0.0.1:6379> get key1
"a2"
複製代碼
strlen key
示例:
127.0.0.1:6379> set key1 abc
OK
127.0.0.1:6379> strlen key1 (integer) 3 複製代碼
getrange key start end
示例:
127.0.0.1:6379> set key1 abcdefg
OK
127.0.0.1:6379> getrange key1 2 4
"cde"
複製代碼
setrange key offset value
示例:
127.0.0.1:6379> setrange key1 2 123
(integer) 7
127.0.0.1:6379> get key1
"ab123fg"
複製代碼
設置新值並返回舊值
getset key value
示例:
127.0.0.1:6379> set key1 abc
OK
127.0.0.1:6379> getset key1 123
"abc"
複製代碼