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"
复制代码