Redis一基本数据类型和命令

  • Redis数据类型
  • String类型
  • list
  • set类型
  • SortedSet
  • Hash类型
  • 常用命令
  • keys
  • del
  • exists
  • expire
  • ttl



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

redis 配置修改databases redis修改数据命令_数据库


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已销毁