redis基本数据类型及其使用命令:
1.基本数据类型:STRING(字符串),LIST(列表),SET(集合),HASH(哈希),ZSET(有序集合),HyperLogLog(做基数统计),GEO(存储地理坐标)
字符串常用命令:
1.字符串
GET SET DEL
基本语法
SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]
GET KEY
DEL KEY [key ...]
127.0.0.1:6379> SET K1 V1
OK
127.0.0.1:6379> GET K1
"V1"
127.0.0.1:6379> del K1
(integer) 1
127.0.0.1:6379> get K1
(nil)
redis自增自减命令
INCR 将键存储的值加1
127.0.0.1:6379> set k1 1
OK
127.0.0.1:6379> INCR k1
(integer) 2
127.0.0.1:6379> get k1
"2"
DECR 将键存储的值减1
127.0.0.1:6379> GET k1
"2"
127.0.0.1:6379> DECR k1
(integer) 1
127.0.0.1:6379> GET k1
"1"
INCRBY 将键存储的值加上一个整数amount
127.0.0.1:6379> GET k1
"1"
127.0.0.1:6379> INCRBY k1 2
(integer) 3
127.0.0.1:6379> GET k1
"3"
DECRBY 将键存储的值减去证书amount
127.0.0.1:6379> GET k1
"3"
127.0.0.1:6379> DECRBY k1 2
(integer) 1
127.0.0.1:6379> GET k1
"1"
INCRBYFLOAT 将键存储的值加上一个浮点数amount
127.0.0.1:6379> GET k1
"1"
127.0.0.1:6379> INCRBYFLOAT k1 2.5
"3.5"
127.0.0.1:6379> GET k1
"3.5"
redis处理字符串和二进制命令
GETRANGE ---> GETRANGE KEY START END:获取KEY值从start到end的新的字符串
127.0.0.1:6379> set k3 abcdefghijklmn ex 20000
OK
127.0.0.1:6379> GETRANGE k3 1 5
"bcdef"
APPEND ---> APPEND KEY VALUE 将值value追加到指定键key对应值末尾
127.0.0.1:6379> set k1 abc
OK
127.0.0.1:6379> GET k1
"abc"
127.0.0.1:6379> APPEND k1 def
(integer) 6
127.0.0.1:6379> GET k1
"abcdef"
SETRANGE ---> SETRANGE KEY OFFSET VALUE 将从OFFSET偏移量开始的字符串设置为指定VALUE
127.0.0.1:6379> GET k1
"abcdef"
127.0.0.1:6379> SETRANGE k1 4 aaabbb
(integer) 10
127.0.0.1:6379> GET k1
"abcdaaabbb"
GETBIT ---> GETBIT KEY OFFSET 将字符串看作是二进制位串,并返回位串中偏移量为OFFSET的二进制位的值
127.0.0.1:6379> GET k1
"abcdaaabbb"
127.0.0.1:6379> GETBIT k1 1
(integer) 1
127.0.0.1:6379> GETBIT k1 2
(integer) 1
127.0.0.1:6379> GETBIT k1 3
(integer) 0
127.0.0.1:6379> GETBIT k1 4
(integer) 0
SETBIT ---> SETBIT KEY OFFSET VALUE 将字符串看作是二进制位串,并将位串中偏移量为OFFSET的二进制位设置位VALUE
127.0.0.1:6379> GET k1
"abcdaaabbb"
127.0.0.1:6379> SETBIT k1 1 2
(error) ERR bit is not an integer or out of range
127.0.0.1:6379> SETBIT k1 1 0
(integer) 1
127.0.0.1:6379> GET k1
"!bcdaaabbb"
BITCOUNT KEY [START END]--->统计二进制位串里面值为1的二进制位的数量,如果给定了可选的START偏移量和END偏移量,那么只对指定范围的二进制位进行统计
127.0.0.1:6379> GET k1
"100"
127.0.0.1:6379> BITCOUNT k1
(integer) 7
127.0.0.1:6379> BITCOUNT k1 1 5
(integer) 4
2.列表
RPUSH ---> RPUSH KEY VALUE [VALUE ...] 将一个或多个值推入列表的右端
127.0.0.1:6379> RPUSH k1 a b c d
(integer) 4
127.0.0.1:6379> LRANGE k1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379>
LPUSH ---> LPUSH KEY VALUE [VALUE ...]将一个或多个值推入列表左侧
127.0.0.1:6379> LRANGE k1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> LPUSH k1 w g j
(integer) 7
127.0.0.1:6379> LRANGE k1 0 -1
1) "j"
2) "g"
3) "w"
4) "a"
5) "b"
6) "c"
7) "d"
RPOP ---> RPOP KEY 从右侧移除列表元素
127.0.0.1:6379> LRANGE k1 0 -1
1) "j"
2) "g"
3) "w"
4) "a"
5) "b"
6) "c"
7) "d"
127.0.0.1:6379> RPOP k1
"d"
127.0.0.1:6379> LRANGE k1 0 -1
1) "j"
2) "g"
3) "w"
4) "a"
5) "b"
6) "c"
LPOP ---> LPOP KEY 从左侧移除列表元素
127.0.0.1:6379> LRANGE k1 0 -1
1) "j"
2) "g"
3) "w"
4) "a"
5) "b"
6) "c"
127.0.0.1:6379> LPOP k1
"j"
127.0.0.1:6379> LRANGE k1 0 -1
1) "g"
2) "w"
3) "a"
4) "b"
5) "c"
LRANGE ---> LRANGE KEY START END 返回列表从START开始到END偏移量范围的所有元素,包含START和END所在位置的值
127.0.0.1:6379> LRANGE k1 0 -1
1) "g"
2) "w"
3) "a"
4) "b"
5) "c"
127.0.0.1:6379> LRANGE k1 0 3
1) "g"
2) "w"
3) "a"
4) "b"
LTRIM ---> LTRIM KEY START END 将列表裁剪,保留START至END内的元素,包含START与END对应的值
127.0.0.1:6379> LRANGE k1 0 -1
1) "g"
2) "w"
3) "a"
4) "b"
5) "c"
127.0.0.1:6379> LTRIM k1 2 -1
OK
127.0.0.1:6379> LRANGE k1 0 -1
1) "a"
2) "b"
3) "c"
阻塞式的列表弹出命令以及再列表中移动元素的命令
BLPOP ---> BLPOP KEY [KEY ...] TIMEOUT(时间单位是秒)从第一个非单位最左端移出元素,或者在timeout秒内阻塞并等待可弹出得到元素出现
127.0.0.1:6379> BLPOP k2 20
BRPOP ---> BRPOP KEY [KEY ...] TIMEOUT(时间单位秒) 从第一个非单位最右端移出元素,或者在timeout秒内阻塞并等待可弹出得到元素出现
127.0.0.1:6379> LPUSH k1 a b c d e
(integer) 5
127.0.0.1:6379> BRPOP k1 10
1) "k1"
2) "a"
127.0.0.1:6379> LRANGE k1 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
RPOPLPUSH ---> RPOPLPUSH source-key dest-key 从source-key列表中弹出位于最右侧的元素,然后将这个元素存入dest-key
127.0.0.1:6379> LRANGE k1 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
127.0.0.1:6379> RPOPLPUSH k1 k2
"b"
127.0.0.1:6379> LRANGE k2 0 -1
1) "b"
127.0.0.1:6379> LRANGE k1 0 -1
1) "e"
2) "d"
3) "c"
BRPOPLPUSH ---> BRPOPLPUSH source-key dest-key TIMEOUT 从source_key 列表中弹出位于最右端的元素,然后将这个元素推入dest-key列表的最左端,并向用户返回这个元素;如果source-key为空,那么在timeout秒之内阻塞并等待可弹出元素出现。
127.0.0.1:6379> LRANGE k2 0 -1
1) "b"
127.0.0.1:6379> LRANGE k1 0 -1
1) "e"
2) "d"
3) "c"
127.0.0.1:6379> BRPOPLPUSH k1 k2 10
"c"
127.0.0.1:6379> LRANGE k1 0 -1
1) "e"
2) "d"
127.0.0.1:6379> LRANGE k2 0 -1
1) "c"
2) "b"
3.集合
常用命令
SADD ---> SADD key item [item ...]将一个或多个元素添加到集合中
127.0.0.1:6379> SADD k1 a b c d e
(integer) 5
127.0.0.1:6379> SMEMBERS k1
1) "d"
2) "b"
3) "a"
4) "c"
5) "e"
SREM --->SREM key-name item [item ...] 从集合中移除一个或多个元素
127.0.0.1:6379> SMEMBERS k1
1) "d"
2) "b"
3) "a"
4) "c"
5) "e"
127.0.0.1:6379> SREM k1 a b
(integer) 2
127.0.0.1:6379> SMEMBERS k1
1) "c"
2) "d"
3) "e"
SISMEMBER ---> SISMEMBER key item 检查元素item是否存在集合key中
127.0.0.1:6379> SMEMBERS k1
1) "c"
2) "d"
3) "e"
127.0.0.1:6379> SISMEMBER k1 c
(integer) 1
127.0.0.1:6379> SISMEMBER k1 a
(integer) 0
SCARD ---> SCARD key 返回key包含的元素数量
127.0.0.1:6379> SMEMBERS k1
1) "d"
2) "c"
3) "e"
127.0.0.1:6379> SCARD k1
(integer) 3
SMEMBERS ---> SMEMBERS key 查看key所有的元素
127.0.0.1:6379> SMEMBERS k1
1) "d"
2) "c"
3) "e"
SRANDMEMBER ---> SRANDMEMBER key [count] 随机返回一个或多个元素
127.0.0.1:6379> SRANDMEMBER k1
"d"
127.0.0.1:6379> SRANDMEMBER k1 2
1) "e"
2) "c"
SPOP ---> SPOP key [count] 随机删除返回一个或多个元素
127.0.0.1:6379> spop k1 1
1) "d"
127.0.0.1:6379> SMEMBERS k1
1) "c"
2) "e"
SMOVE ---> SMOVE source-key dest-key item 如果集合包含元素item,那么从集合source-key里面移除元素item,并将元素item添加到集合dest-key中。
127.0.0.1:6379> SMOVE k1 k2 c
(integer) 1
127.0.0.1:6379> SMEMBERS k2
1) "c"
127.0.0.1:6379> SMEMBERS k1
1) "e"
用于组合和处理多个集合的redis命令
SDIFF ---> SDIFF key [key ...] 返回存在于第一个集合但不存在其他集合中的元素
127.0.0.1:6379> SMEMBERS k1
1) "b"
2) "d"
3) "a"
4) "c"
5) "e"
127.0.0.1:6379> SMEMBERS k2
1) "f"
2) "g"
3) "c"
4) "h"
5) "d"
127.0.0.1:6379> SDIFF k1 k2
1) "a"
2) "b"
3) "e"
SDIFFSTORE ---> SDIFFSTORE dest-key key [key ...]将那些存在于第一个集合但并不存在其他集合中的元素存储到dest-key中
127.0.0.1:6379> SMEMBERS k1
1) "b"
2) "d"
3) "a"
4) "c"
5) "e"
127.0.0.1:6379> SMEMBERS k2
1) "f"
2) "g"
3) "c"
4) "h"
5) "d"
127.0.0.1:6379> SDIFFSTORE k3 k1 k2
(integer) 3
127.0.0.1:6379> SMEMBERS k3
1) "a"
2) "b"
3) "e"
SINTER ---> SINTER key [key ...] 返回同时在所有集合的元素(交集)
127.0.0.1:6379> SMEMBERS k1
1) "b"
2) "d"
3) "a"
4) "c"
5) "e"
127.0.0.1:6379> SMEMBERS k2
1) "f"
2) "h"
3) "d"
4) "c"
5) "g"
127.0.0.1:6379> SINTER k1 k2
1) "d"
2) "c"
SINTERSTORE ---> SINTERSTORE dest-key key [key ...]求key的交集,然后将交集存储在dest-key中
127.0.0.1:6379> SMEMBERS k1
1) "b"
2) "d"
3) "a"
4) "c"
5) "e"
127.0.0.1:6379> SMEMBERS k2
1) "f"
2) "h"
3) "d"
4) "c"
5) "g"
127.0.0.1:6379> SINTERSTORE k4 k1 k2
(integer) 2
127.0.0.1:6379> SMEMBERS k4
1) "d"
2) "c"
SUNION ---> SUNION key [key ...] 求所有元素的并集
127.0.0.1:6379> SMEMBERS k1
1) "b"
2) "d"
3) "a"
4) "c"
5) "e"
127.0.0.1:6379> SMEMBERS k2
1) "f"
2) "h"
3) "d"
4) "c"
5) "g"
127.0.0.1:6379> SUNION k1 k2
1) "h"
2) "b"
3) "f"
4) "d"
5) "a"
6) "g"
7) "c"
8) "e"
SUNIONSTORE ---> SUNIONSTORE dest-key key[key ...] 将所有元素取并集并存入dest-key中
127.0.0.1:6379> SMEMBERS k1
1) "b"
2) "d"
3) "a"
4) "c"
5) "e"
127.0.0.1:6379> SMEMBERS k2
1) "f"
2) "h"
3) "d"
4) "c"
5) "g"
127.0.0.1:6379> SUNIONSTORE k5 k1 k2
(integer) 8
127.0.0.1:6379> SMEMBERS k5
1) "h"
2) "b"
3) "f"
4) "d"
5) "a"
6) "g"
7) "c"
8) "e"
散列
HMGET ---> HMGET key-name key [key ...] 从散列中获取一个或多个键的值
127.0.0.1:6379> HMSET k1 key1 value1 key2 value2
OK
127.0.0.1:6379> HMGET k1 key1
1) "value1"
127.0.0.1:6379> HMGET k1 key2
1) "value2"
HMSET ---> HMSET key key value [key value ...]为散列里面的一个或多个键设置值
127.0.0.1:6379> HMSET k1 key1 value1 key2 value2
OK
127.0.0.1:6379> HMGET k1 key1
1) "value1"
127.0.0.1:6379> HMGET k1 key2
1) "value2"
HLEN ---> HLEN key 返回散列包含的键值对数量
127.0.0.1:6379> HLEN k1
(integer) 2
HDEL key-nme key [key ...] 删除散列里面的一个或多个键值对
127.0.0.1:6379> HLEN k1
(integer) 2
127.0.0.1:6379> HDEL k1 key1
(integer) 1
127.0.0.1:6379> HLEN k1
(integer) 1
127.0.0.1:6379> HGET k1 key2
"value2"
HEXISTS ---> HEXISTS key-name key 检查给定的键是否在散列中
127.0.0.1:6379> HSET k1 key1 value1 key2 value2 key3 value3
(integer) 3
127.0.0.1:6379> HEXISTS k1 key1
(integer) 1
127.0.0.1:6379> HEXISTS k1 key4
(integer) 0
HKEYS key-name 获取散列中包含的所有键
127.0.0.1:6379> HKEYS k1
1) "key1"
2) "key2"
3) "key3"
HVALS ---> HVALS key-name 获取散列中所有的值
127.0.0.1:6379> HVALS k1
1) "value1"
2) "value2"
3) "value3"
HGETALL ---> HGETALL key-name 获取散列包含的所有键值对
127.0.0.1:6379> HGETALL k1
1) "key1"
2) "value1"
3) "key2"
4) "value2"
5) "key3"
6) "value3"
HINCRBY ---> HINCRBY key-name key increment 将键key存储的值加上整数increment
127.0.0.1:6379> HSET k2 k 1
(integer) 1
127.0.0.1:6379> HINCRBY k2 k 2
(integer) 3
127.0.0.1:6379> HGET k2 k
"3"
HINCRBYFLOAT ---> HINCRBYFLOAT key-name key increment 将键存储的值加上浮点数increment
127.0.0.1:6379> HINCRBYFLOAT k2 k 0.2
"3.2"
127.0.0.1:6379> HGET k2 k
"3.2"
有序集合
ZADD ---> ZADD key-name score member [score member ...] 将带有给定分值的成员添加到有序的集合里面
127.0.0.1:6379> ZADD k1 1 one 2 two 3 three 4 four 5 five
(integer) 5
127.0.0.1:6379> ZRANGE k1 0 -1
1) "one"
2) "two"
3) "three"
4) "four"
5) "five"
127.0.0.1:6379> ZRANGE k1 0 -1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "five"
10) "5"
ZREM ---> ZREM key-name member [member ...] 从有序集合里面移除给定的成员,并返回被移除的成员数量
127.0.0.1:6379> ZRANGE k2 0 -1 withscores
1) "c"
2) "5"
3) "a"
4) "10"
5) "d"
6) "15"
7) "b"
8) "20"
127.0.0.1:6379> ZREM k1 a b
(integer) 0
127.0.0.1:6379> ZRANGE k1 0 -1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "five"
10) "5"
ZINCRBY ---> ZINCRBY key-name increment member 将member成员
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "five"
10) "5"
127.0.0.1:6379> ZINCRBY k1 10 one
"11"
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "11"
ZCOUNT key-name min max 返回分值介于min和max之间的成员数量
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "11"
127.0.0.1:6379> ZCOUNT k1 5 8
(integer) 1
ZRANK key-name member 返回成员member在有序集合中的排名
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "11"
127.0.0.1:6379> ZRANK k1 five
(integer) 3
127.0.0.1:6379> ZRANK k1 two
(integer) 0
ZSCORE ---> ZSCORE key-name member 返回成员member的分值
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "11"
127.0.0.1:6379> ZSCORE k1 three
"3"
ZRANGE ---> ZRANGE key-name start end [withscores] 返回有序集合排名介于start和stop之间的成员,可选定withscores选项,那么命令会将承运的分值也一并返回
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "11"
有序集合的范围型数据获取命令和范围
ZREVRANK ---> ZREVRANK key-name member 返回有序集合里成员member的排名,成员按照分值从大到小排列
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "11"
127.0.0.1:6379> ZREVRANK k1 five
(integer) 1
ZREVRANGE ---> ZREVRANGE key-name 0 -1 [withscores] 返回有序集合给定排名范围的成员,成员按照分值从大到小排列
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "11"
127.0.0.1:6379> ZREVRANGE k1 0 -1 withscores
1) "one"
2) "11"
3) "five"
4) "5"
5) "four"
6) "4"
7) "three"
8) "3"
9) "two"
10) "2"
127.0.0.1:6379> ZREVRANGE k1 0 -1
1) "one"
2) "five"
3) "four"
4) "three"
5) "two"
ZRANGEBYSCORE ---> ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 获取有序集合中,分值介于min和max之间的所有成员
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "11"
127.0.0.1:6379> ZRANGEBYSCORE k1 3 8
1) "three"
2) "four"
3) "five"
127.0.0.1:6379> ZRANGEBYSCORE k1 3 8 withscores
1) "three"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> ZRANGEBYSCORE k1 3 8 withscores limit 0 10
1) "three"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> ZRANGEBYSCORE k1 3 8 withscores limit 1 10
1) "four"
2) "4"
3) "five"
4) "5"
127.0.0.1:6379> ZRANGEBYSCORE k1 3 8 withscores limit 2 10
1) "five"
2) "5"
ZREMRANGEBYRANK ---> ZREMRANGEBYRANK key-name start stop 移除有序集合中排名介于start和stop之间的所有成员
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "11"
127.0.0.1:6379> ZREMRANGEBYRANK k1 0 2
(integer) 3
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "five"
2) "5"
3) "one"
4) "11"
ZREMRANGEBYSCORE ---> ZREMRANGEBYSCORE key-name min max 移除有序集合中分值介于min和max之间所有的成员
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "five"
2) "5"
3) "one"
4) "11"
127.0.0.1:6379> ZREMRANGEBYSCORE k1 5 8
(integer) 1
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "one"
2) "11"
ZINTERSTORE ---> ZINTERSTORE dest-key key-count key [key ...] [WEIGHT weight [weight ...]] 对给定的有序集合执行类似于集合的交集运算
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "five"
10) "5"
11) "six"
12) "6"
13) "seven"
14) "7"
127.0.0.1:6379> ZRANGE k2 0 -1 withscores
1) "five"
2) "5"
3) "six"
4) "6"
5) "seven"
6) "7"
7) "eight"
8) "8"
9) "nine"
10) "9"
11) "ten"
12) "10"
127.0.0.1:6379> ZINTERSTORE k3 2 k1 k2
(integer) 3
127.0.0.1:6379> ZRANGE k3 0 -1 withscores
1) "five"
2) "10"
3) "six"
4) "12"
5) "seven"
6) "14"
127.0.0.1:6379> ZINTERSTORE k4 10 k1 k2
(error) ERR syntax error
127.0.0.1:6379> ZINTERSTORE k4 9 k1 k2
(error) ERR syntax error
127.0.0.1:6379> ZINTERSTORE k4 3 k1 k2
(error) ERR syntax error
127.0.0.1:6379> ZINTERSTORE k4 2 k1 k2
(integer) 3
ZUNIONSTORE ---> ZUNIONSTORE dest-key key-count key [key ...] [WEIGHTS weight [weight ...]] [[AGGREGATE SUM|MIN|MAX]] 对给定的有序集合执行类似于集合的并集运算
127.0.0.1:6379> ZUNIONSTORE k5 2 k1 k2
(integer) 10
127.0.0.1:6379> ZRANGE k5 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
9) "eight"
10) "8"
11) "nine"
12) "9"
13) "five"
14) "10"
15) "ten"
16) "10"
17) "six"
18) "12"
19) "seven"
20) "14"