Redis数据类型
查看redis数据类型常用的命令
help @generic #查看所有命令
help @String #查看String类型的命令
...
help keys#查看keys命令的用法
Reids是一个键值数据库,key一般是String类型,但是value的类型多种多样
String类型
String类型是Redis最简单的存储类型
其value是字符串,不过根据字符串的格式分为
- String:普通字符串
- int整数类型,可以做自增,自减(为了节约空间底层用的是对应的字节码,比对应的字符串更省空间,比如10比"10"更省空间)
- float:浮点类型,可以做自增,自减(同int)
不管是哪种底层都是字节数组存储
- set 添加和修改键值对
- get 根据key获取value
- mset 批量插入
- mget 批量获取
- incr 让一个整型自增
- incrby 让一个整型自增并指定步长 eg:incrby num 2
- incrbyfloat 让一个浮点类型数字自增指定步长
- setnx 添加String类型键值对,如果存在不执行
- setex 添加一个String类型键值对,并指定有效期
list
127.0.0.1:6379> lpush list a#向左侧插入一个或多个元素
(integer) 1
127.0.0.1:6379> lpush list b
(integer) 2
127.0.0.1:6379> lrange list 0 2#返回一段范围内的所有元素
1) "b"
2) "a"
127.0.0.1:6379> lpop list#从左端移除一个元素
"b"
127.0.0.1:6379> lrange list 0 2#要取得范围大于本身长度不会报错
1) "a"
127.0.0.1:6379> lpush list 1 2 3
(integer) 4
127.0.0.1:6379> lrange list 0 4
1) "3"
2) "2"
3) "1"
4) "a"
127.0.0.1:6379> rpush list 6#向右侧插入一个或多个元素
(integer) 5
127.0.0.1:6379> lrange list 0 5
1) "3"
2) "2"
3) "1"
4) "a"
5) "6"
127.0.0.1:6379> rpop list#从右侧移除一个元素
"6"
-----------------------------------------------------------------
#开启一个终端
127.0.0.1:6379> blpop jack 100#与lpop类似,只不过在没有元素时等待指定时间,而不是返回nil
#命令行在此中断
#开启另一个终端
127.0.0.1:6379> lpush jack 1
(integer) 1
#原终端
127.0.0.1:6379> blpop jack 100
1) "jack"
2) "1"
(33.26s)#等待了多少秒
127.0.0.1:6379> brpop jack #与blpop效果类似
set类型
127.0.0.1:6379> sadd set 1 2 3#向set插入一个或多个元素
(integer) 3
127.0.0.1:6379> sadd set 1
(integer) 0
127.0.0.1:6379> srem set 2#从set移除某个元素
(integer) 1
127.0.0.1:6379> smembers set#获取set中的数据
1) "1"
2) "3"
127.0.0.1:6379> scard set#获取set数据的数量
(integer) 2
127.0.0.1:6379> sismember set 1#判断set中是否存在1
(integer) 1
-------------------------------------------------------
127.0.0.1:6379> sadd set1 1 2 3
(integer) 3
127.0.0.1:6379> sadd set2 2 3 4
(integer) 3
127.0.0.1:6379> sinter set1 set2#获取两个set的交集
1) "2"
2) "3"
127.0.0.1:6379> sdiff set1 set2#获取两个set的差集
1) "1"
127.0.0.1:6379> sunion set1 set2#获取两个set的并集
1) "1"
2) "2"
3) "3"
4) "4"
SortedSet
#sortedset默认是升序要让其按降序执行某些操作需要在z后面加rev
#zadd key score member 给key添加member和score
127.0.0.1:6379> zadd stus 85 jack 89 lusy 82 rose 95 tom 78 jerry 92 amy 76 miles
(integer) 7
127.0.0.1:6379> zrem stus tom#移除某个member
(integer) 1
127.0.0.1:6379> zscore stus jack#获取某个member的score
"85"
127.0.0.1:6379> zrank stus rose#获取某个member的排名(从零开始)
(integer) 2
127.0.0.1:6379> zcard stus#获取key的member数量
(integer) 6
127.0.0.1:6379> zcount stus 0 80#获取符合min到max范围内的数量
(integer) 2
127.0.0.1:6379> zincrby stus 2 amy#给key的某个member增加指定步长
"94"
127.0.0.1:6379> zrange stus 0 2#获取排名在前三的(默认升序即分数最低三人)member
1) "miles"
2) "jerry"
3) "rose"
127.0.0.1:6379> zrangebyscore stus 0 80#获取分数在指定范围内的member
1) "miles"
2) "jerry"
#zdiff,zinter,zunion和set的一样
Hash类型
Hash类型其value是一个无序字典,类似于java中的HashMap
127.0.0.1:6379> help hset
HSET key field value
summary: Set the string value of a hash field
since: 2.0.0
group: hash
127.0.0.1:6379> hset user:1 name kunkun #增加某个key的filed对应的键值对
(integer) 1
127.0.0.1:6379> hset user:1 age 2.5
(integer) 1
127.0.0.1:6379> hset user:1 age 2
(integer) 0
127.0.0.1:6379> help hget
HGET key field
summary: Get the value of a hash field
since: 2.0.0
group: hash
127.0.0.1:6379> hget user:1 age#获取某个key的filed
"2"
127.0.0.1:6379>help hmset
HMSET key field value [field value ...]
summary: Set multiple hash fields to multiple values
since: 2.0.0
group: hash
127.0.0.1:6379> hmset user:2 name han age 18#批量获取某个key的fields键值对
OK
127.0.0.1:6379> help hmget
HMGET key field [field ...]
summary: Get the values of all the given hash fields
since: 2.0.0
group: hash
127.0.0.1:6379> hmget user:2 name age#批量获取fileds
1) "han"
2) "18"
127.0.0.1:6379> help hgetall
HGETALL key
summary: Get all the fields and values in a hash
since: 2.0.0
group: hash
127.0.0.1:6379> hgetall user:1#获取一个key对应的所有的filed和value
1) "name"
2) "kunkun"
3) "age"
4) "2"
127.0.0.1:6379> help hkeys
HKEYS key
summary: Get all the fields in a hash
since: 2.0.0
group: hash
127.0.0.1:6379> hkeys user:1 #获取所有fields
1) "name"
2) "age"
127.0.0.1:6379> help hvals
HVALS key
summary: Get all the values in a hash
since: 2.0.0
group: hash
127.0.0.1:6379> hvals user:1# 获取所有values
1) "kunkun"
2) "2"
127.0.0.1:6379> help hincrby
HINCRBY key field increment
summary: Increment the integer value of a hash field by the given number
since: 2.0.0
group: hash
127.0.0.1:6379> hincrby user:2 age 1 #增长某个hash的filed指定步长
(integer) 19
127.0.0.1:6379> hget user:2 age
"19"
127.0.0.1:6379> help hsetnx
HSETNX key field value
summary: Set the value of a hash field, only if the field does not exist
since: 2.0.0
group: hash
127.0.0.1:6379> hsetnx user:2 name 12 #添加一个hash的filed,如果filed存在就不执行
(integer) 0
常用命令
keys
查看符合模板的所有key,效率较低,不建议在生产环境设备上使用
127.0.0.1:6379> help keys
KEYS pattern
summary: Find all keys matching the given pattern
since: 1.0.0
group: generic
...
keys * #查看所有key
keys a* #查看以a开头的key
del
删除一个key
127.0.0.1:6379> help del
DEL key [key ...]
summary: Delete a key
since: 1.0.0
group: generic
...
del name #删除key为name的的键值对
(integer) 1#返回值表示删除了一个键值对
del k1 k2 k3
(integer) 2#表示只删除了两个键值对
exists
产看存在几个要查看是否存在的key
127.0.0.1:6379> help exists
EXISTS key [key ...]
summary: Determine if a key exists
since: 1.0.0
group: generic
...
exists k1
(integer) 0#存在几个要查看是否存在的key
expire
指定一个key的存在时间
127.0.0.1:6379> help EXPIRE
EXPIRE key seconds
summary: Set a key's time to live in seconds
since: 1.0.0
group: generic
....
127.0.0.1:6379> expire age 20
(integer) 0# 当没有这个key时返回值是0
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> expire age 20
(integer) 1
ttl
查看一个key的剩余存在时间
127.0.0.1:6379> help ttl
TTL key
summary: Get the time to live for a key
since: 1.0.0
group: generic
...
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> ttl age
(integer) -1 #-1表示这个key是永久保存的
127.0.0.1:6379> expire age 20
(integer) 1
127.0.0.1:6379> ttl age
(integer) 7#剩余7s
127.0.0.1:6379> ttl age
(integer) -2#-2表示key已销毁