Redis中所有数据都是以key-value存储的,value支持的数据类型包括string、hash、list、set、sorted_set
数据类型
string 是redis最基本的类型,一个key对应一个value;
hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象;
list 是简单的字符串列表,按照插入顺序排序;
set 是string类型的无序集合;
zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
0 key
查找已保存的key用keys pattern,先用help <command>
查看keys的详细信息
127.0.0.1:6379> help keys
KEYS pattern
summary: Find all keys matching the given pattern
since: 1.0.0
group: generic
127.0.0.1:6379>
0.1 基本命令
命令 | 用途 |
---|---|
select index | 选择数据库(redis.conf默认配置共16:0-15) |
keys pattern | 根据pattern(支持通配符?*)查找匹配的key |
type key | 查看数据类型 |
expire key seconds | 设置key的有效期 |
ttl key | 查看key的有效期 |
flushdb | 移除当前 数据库的所有key |
flushall | 移除所有 数据库的所有key |
0.2 示例
显示所有key
127.0.0.1:6379> keys *
1) "k6"
2) "k8"
3) "k12"
4) "k5"
5) "k1"
6) "k2"
7) "k9"
8) "k11"
9) "k7"
10) "k10"
11) "k4"
127.0.0.1:6379>
移除所有key
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
1 string
1.1 常用命令
命令 | 用途 |
---|---|
set key value | 设置一个key的value(string类型) |
get key | 获取一个key的value(string类型) |
append key value | 向一个string类型的key追加一个value |
strlen key | 获取key中存储的value的长度 |
del key [key ...] | 删除key |
incr key | key的integer类型的value+1 |
decr | key的integer类型的value-1 |
incrby key increment | key的integer类型的vaule+increment |
decrby key decrement | key的integer类型的vaule-decrement |
getrange key start end | 截取字符串 |
setrange key offset value | 从指定的位置覆盖字符串 |
setex key seconds value | 保存含有效期的key-value |
setnx key value | 设置key-value(仅当key不存在时) |
mset key value [key value ...] | 设置多个key-value |
mget key [key ...] | 查询多个key |
msetnx key value [key value ...] | 保存多个key-value(所有key均不存在才保存) |
1.2 示例
分别通过set、mset保存key-value(k1-k10)及get、mget获取key
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> set k4 4
OK
127.0.0.1:6379> set k5 5
OK
127.0.0.1:6379> set k6 6
OK
127.0.0.1:6379> set k7 abcde
OK
127.0.0.1:6379> set k8 edcba
OK
127.0.0.1:6379> mset k9 v9 k10 v10
OK
127.0.0.1:6379> keys *
1) "k6"
2) "k8"
3) "k5"
4) "k3"
5) "k1"
6) "k2"
7) "k9"
8) "k7"
9) "k10"
10) "k4"
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mget k2 k3 k4 k5 k6 k7 k8 k9 k10
1) "v2"
2) "v3"
3) "4"
4) "5"
5) "6"
6) "abcde"
7) "edcba"
8) "v9"
9) "v10"
127.0.0.1:6379>
使用append追加一个value到key
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> append k1 v1v1
(integer) 6
127.0.0.1:6379> get k1
"v1v1v1"
127.0.0.1:6379>
使用strlen获取key中value的长度
127.0.0.1:6379> strlen k1
(integer) 6
删除key
127.0.0.1:6379> mget k2 k3
1) "v2"
2) "v3"
127.0.0.1:6379> del k2 k3
(integer) 2
127.0.0.1:6379> keys *
1) "k6"
2) "k8"
3) "k5"
4) "k1"
5) "k9"
6) "k7"
7) "k10"
8) "k4"
127.0.0.1:6379>
incr使value+1
127.0.0.1:6379> incr k6
(integer) 7
decr使value-1
127.0.0.1:6379> decr k4
(integer) 3
incrby使value+给定值
127.0.0.1:6379> incrby k5 5
(integer) 10
decrby使value-给定值
127.0.0.1:6379> decrby k5 9
(integer) 1
getrange截取字符串
127.0.0.1:6379> get k7
"abcde"
127.0.0.1:6379> getrange k7 0 3
"abcd"
setrange从指定的位置覆盖字符串
127.0.0.1:6379> get k7
"abcde"
127.0.0.1:6379> setrange k7 2 xyzopq
(integer) 8
127.0.0.1:6379> get k7
"abxyzopq"
setex设置含有效期的key-value
127.0.0.1:6379> setex k11 20 value
OK
127.0.0.1:6379> ttl k11
(integer) 17
127.0.0.1:6379> ttl k11
(integer) 14
127.0.0.1:6379> ttl k11
(integer) 10
127.0.0.1:6379> ttl k11
(integer) 5
127.0.0.1:6379> ttl k11
(integer) 1
127.0.0.1:6379> ttl k11
(integer) -2
127.0.0.1:6379> get k11
(nil)
127.0.0.1:6379>
setnx保存key-value(若key已存在,不保存)
127.0.0.1:6379> get k1
"v1v1v1"
127.0.0.1:6379> get k2
(nil)
127.0.0.1:6379> setnx k1 xyz
(integer) 0
127.0.0.1:6379> setnx k2 abc
(integer) 1
127.0.0.1:6379> get k2
"abc"
127.0.0.1:6379>
msetnx保存多个key-value(所有key均不存在才保存)
127.0.0.1:6379> msetnx k11 v11 k12 v12 k10 v10
(integer) 0
127.0.0.1:6379> msetnx k11 v11 k12 v12
(integer) 1
127.0.0.1:6379> mget k11 k12
1) "v11"
2) "v12"
127.0.0.1:6379>
1.3 帮助信息
help @string命令查看string
类型的所有用法。帮助信息里面都是非常通俗的英文描述,不难看懂,其它数据类型不再照抄redis的帮助信息了,建议直接看自带的帮助,这是最权威的,英文直接能看懂的话,效果肯定比看其它资料好。
127.0.0.1:6379> help @string
APPEND key value
summary: Append a value to a key
since: 2.0.0
...省略1000字...
GET key
summary: Get the value of a key
since: 1.0.0
...省略10,000字...
SETEX key seconds value
summary: Set the value and expiration of a key
since: 2.0.0
SETNX key value
summary: Set the value of a key, only if the key does not exist
since: 1.0.0
SETRANGE key offset value
summary: Overwrite part of a string at key starting at the specified offset
since: 2.2.0
STRLEN key
summary: Get the length of the value stored in a key
since: 2.2.0
127.0.0.1:6379>
2 hash
2.1 常用命令
命令 | 用途 |
---|---|
hset key field value | 保存一个field到hash |
hget key field | 获取hash的一个field值 |
hmset key field value [field value ...] | 保存多个field到hash |
hmget key field [field ...] | 获取hash的多个field值 |
hgetall key | 获取hash的所有field(name & value) |
hdel key field [field ...] | 删除hash的field |
hlen key | 获取hash中field的数量 |
hexists key field | 判断hash中是否存在给定的field |
hkeys key | 获取给定hash中的所有field(仅name) |
hvals key | 获取给定hash中所有field的值(仅value) |
hincrby key field increment | hash中指定的field+increment(integer) |
hincrbyfloat key field increment | hash中指定的field+increment(float) |
2.2 示例
hset保存一个field到hash
127.0.0.1:6379> hset h f1 v1
(integer) 1
hget获取hash的指定field
127.0.0.1:6379> hget h f1
"v1"
hmset保存多个field到hash
127.0.0.1:6379> hmset h f2 2 f3 3 f4 4
OK
hmget获取hash的多个field
127.0.0.1:6379> hmget h f1 f2 f3 f4 f5
1) "v1"
2) "2"
3) "3"
4) "4"
5) (nil)
hgetall获取hash的所有filed(包括name和value)
127.0.0.1:6379> hgetall h
1) "f1"
2) "v1"
3) "f2"
4) "2"
5) "f3"
6) "3"
7) "f4"
8) "4"
hdel删除hash的指定field
127.0.0.1:6379> hdel h f1
(integer) 1
hlen获取hash中field数量
127.0.0.1:6379> hlen h
(integer) 3
hexists判断hash中是否存在指定的field
127.0.0.1:6379> hexists h f1
(integer) 0
127.0.0.1:6379> hexists h f2
(integer) 1
hkeys获取hash中的所有field(仅name)
127.0.0.1:6379> hkeys h
- "f2"
- "f3"
- "f4"
hvals获取hash中所有field的value
127.0.0.1:6379> hvals h
1) "2"
2) "3"
3) "4"
hincrby使hash中指定的field+给定的值(integer)
127.0.0.1:6379> hincrby h f2 5
(integer) 7
hincrbyfloat使hash中指定的field+给定的值(float)
127.0.0.1:6379> hincrbyfloat h f2 5.5
"12.5"
3 list
3.1 常用命令
命令 | 用途 |
---|---|
lpush key value [value ...] | 保存一个或多个value到list(向前追加) |
rpush key value [value ...] | 保存一个或多个value到list(向后追加) |
lrange key start stop | 从list中获取一个范围的元素 |
lpop key | 移除list中的第一个元素 |
rpop key | 一处list中的最后一个元素 |
lindex key index | 通过索引获取list中的元素 |
llen key | 获取list的长度 |
lrem key count value | 从list中移除count个value |
ltrim key start stop | 按指定的范围截取list |
rpoplpush key key | 从list中移除最后一个元素,并将该元素lpush到另一个list |
lset key index | 通过索引设置list中的元素 |
3.2 示例
lpush、rpush、lrange
127.0.0.1:6379> lpush l a b c
(integer) 3
127.0.0.1:6379> lrange l 0 -1
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> rpush l x y z
(integer) 6
127.0.0.1:6379> lrange l 0 -1
1) "c"
2) "b"
3) "a"
4) "x"
5) "y"
6) "z"
127.0.0.1:6379>
lpop
127.0.0.1:6379> lpop l
"c"
127.0.0.1:6379> lrange l 0 -1
1) "b"
2) "a"
3) "x"
4) "y"
5) "z"
127.0.0.1:6379>
rpop
127.0.0.1:6379> rpop l
"z"
127.0.0.1:6379> lrange l 0 -1
1) "b"
2) "a"
3) "x"
4) "y"
127.0.0.1:6379>
lindex通过索引获取list中的元素
127.0.0.1:6379> lindex l 0
"b"
127.0.0.1:6379>
llen获取list长度
127.0.0.1:6379> llen l
(integer) 4
127.0.0.1:6379>
lrem从list中移除count个指定的value
127.0.0.1:6379> lrange l2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "1"
7) "2"
8) "3"
9) "4"
10) "5"
11) "1"
12) "2"
13) "3"
14) "4"
15) "5"
127.0.0.1:6379> lrem l2 2 5
(integer) 2
127.0.0.1:6379> lrange l2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "1"
6) "2"
7) "3"
8) "4"
9) "1"
10) "2"
11) "3"
12) "4"
13) "5"
127.0.0.1:6379>
ltrim按指定的范围截取list
127.0.0.1:6379> ltrim l2 0 3
OK
127.0.0.1:6379> lrange l2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379>
rpoplpush从list移除最后一个元素,并将该元素添加到另一个list的左边
127.0.0.1:6379> rpoplpush l l2
"y"
127.0.0.1:6379> lrange l2 0 -1
1) "y"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379>
lset通过索引设置list的元素
127.0.0.1:6379> lset l2 0 0
OK
127.0.0.1:6379> lrange l2 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379>
4 set
4.1 常用命令
命令 | 用途 |
---|---|
sadd key member [member ...] | 添加1个或多个member到set中 |
smembers key | 获取set中的所有member |
sismember key member | 判断给定的值是否时set中的member |
scard key | 获取set中member的数量 |
srem key member [member ...] | 从set中移除member |
srandmember key [count] | 从set中随机获取member |
smove key key member | 从set移动一个member到另一个set |
sdiff key [key ...] | 比较多个set的差异 |
sinter key [key ...] | 获取set的交集 |
sunion key [key ...] | 获取set的并集 |
4.2 示例
sadd 添加1个或多个member到set中
127.0.0.1:6379> sadd s1 a b c d e f
(integer) 6
smembers 获取set中的所有member
127.0.0.1:6379> smembers s1
1) "c"
2) "a"
3) "b"
4) "f"
5) "d"
6) "e"
sismember 判断给定的值是否时set中的member
127.0.0.1:6379> sismember s1 a
(integer) 1
127.0.0.1:6379> sismember s1 x
(integer) 0
scard 获取set中member的数量
127.0.0.1:6379> scard s1
(integer) 6
srem 从set中移除member
127.0.0.1:6379> srem s1 e f
(integer) 2
127.0.0.1:6379> smembers s1
1) "a"
2) "c"
3) "d"
4) "b"
srandmember 从set中随机获取member
127.0.0.1:6379> srandmember s1 2
1) "a"
2) "b"
127.0.0.1:6379> srandmember s1 2
1) "c"
2) "a"
127.0.0.1:6379> srandmember s1 2
1) "c"
2) "b"
smove 从set移动一个member到另一个set
127.0.0.1:6379> sadd s2 1 2 3
(integer) 3
127.0.0.1:6379> smove s1 s2 d
(integer) 1
127.0.0.1:6379> smembers s2
1) "d"
2) "3"
3) "1"
4) "2"
sdiff 比较多个set的差异
127.0.0.1:6379> sadd s3 1 2
(integer) 2
127.0.0.1:6379> sdiff s2 s3
1) "3"
2) "d"
sinter 获取set的交集
127.0.0.1:6379> sinter s2 s3
1) "1"
2) "2"
sunion 获取set的并集
127.0.0.1:6379> sunion s1 s2
1) "b"
2) "3"
3) "a"
4) "c"
5) "d"
6) "1"
7) "2"
5 zset(sorted_set)
sorted_set
类似于set,只是在set的基础上对每个member增加了一个score(double类型)值,并按照此score排序
5.1 常用命令
命令 | 用途 |
---|---|
zadd key socre member [socre member ...] | 添加member到sorted set,如果member已存在则更新它的socre |
zrange key start stop [withscores] | 从sorted set获取指定索引范围的member,按从小到大的顺序 |
zrevrange key start stop [withscores] | 从sorted set获取指定索引范围的member,按从大到小的顺序 |
zrangebyscore key min max [withscores] [limit offset count] | 从sorted set获取指定score范围的member |
zcount key min max | 获取指定score范围内的member数量 |
zrank key member | 确定member在sorted set中的索引(从小到大) |
zrevrank key member | 确定member在sorted set中的索引(从大到小) |
zscore key member | 从sorted set中获取给定member的score |
5.2 示例
zadd 添加member到sorted set,如果member已存在则更新它的socre
127.0.0.1:6379> zadd z1 10 aa 20 bb 30 cc 40 dd 50 ee 60 ff
(integer) 6
127.0.0.1:6379> zadd z1 70 gg 15 bb
(integer) 1
127.0.0.1:6379>
zrange 从sorted set获取指定索引范围的member,按从小到大的顺序
127.0.0.1:6379> zrange z1 0 2
1) "aa"
2) "bb"
3) "cc"
127.0.0.1:6379>
zrevrange 从sorted set获取指定索引范围的member,按从大到小的顺序
127.0.0.1:6379> zrevrange z1 0 2
1) "gg"
2) "ff"
3) "ee"
127.0.0.1:6379>
zrangebyscore 从sorted set获取指定score范围的member
如果不包含给定的score,需要使用(
127.0.0.1:6379> zrangebyscore z1 10 30
1) "aa"
2) "bb"
3) "cc"
127.0.0.1:6379> zrangebyscore z1 10 (30
1) "aa"
2) "bb"
127.0.0.1:6379> zrangebyscore z1 (10 30
1) "bb"
2) "cc"
127.0.0.1:6379> zrangebyscore z1 (10 (30
1) "bb"
127.0.0.1:6379>
zcount 获取指定score范围内的member数量
如果不包含给定的score,需要使用(
127.0.0.1:6379> zcount z1 10 30
(integer) 3
127.0.0.1:6379> zcount z1 10 (30
(integer) 2
127.0.0.1:6379> zcount z1 (10 30
(integer) 2
127.0.0.1:6379> zcount z1 (10 (30
(integer) 1
127.0.0.1:6379>
zrank 确定member在sorted set中的索引(从小到大)
127.0.0.1:6379> zrank z1 cc
(integer) 2
127.0.0.1:6379>
zrevrank 确定member在sorted set中的索引(从大到小)
127.0.0.1:6379> zrevrank z1 cc
(integer) 4
127.0.0.1:6379>
zscore 从sorted set中获取给定member的score
127.0.0.1:6379> zscore z1 bb
"15"
127.0.0.1:6379>