1、数据结构的介绍:
- String
 - Hash
 - List
 - Set
 - SortedSet
 - GEO
 - BitMap
 - HyperLog
 
2、Redis通用的命令 :
通用执行是部分数据类型的,都可以使用的指令,常见的有:
KEYS:查看复合模版的所有key,不建议在生产环境中使用
DEL:删除一个指定的key
EXISTS:判断key是否存在
EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
TTL:查看key的剩余时间,查看一个未设置过期时间的key为-1.
通过help[ command ] 可以查看一个命令的具体用法,例如:
127.0.0.1:6379> keys *
1) "name"
2) "age"
127.0.0.1:6379>
# 查询以a开头的key
127.0.0.1:6379> keys a*
1) "age"
127.0.0.1:6379>
//--------DEL-------
127.0.0.1:6379> help del
  DEL key [key ...]
  summary: Delete a key
  since: 1.0.0
  group: generic
127.0.0.1:6379> del name #删除单个
(integer) 1  #成功删除1个
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 #批量添加数据
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
4) "age"
127.0.0.1:6379> del k1 k2 k3 k4
(integer) 3   #此处返回的是成功删除的key,由于redis中只有k1,k2,k3 所以只成功删除3个,最终返回
127.0.0.1:6379>
127.0.0.1:6379> keys * #再查询全部的key
1) "age"	#只剩下一个了
127.0.0.1:6379>
//--------EXISTS-------
127.0.0.1:6379> help EXISTS
  EXISTS key [key ...]
  summary: Determine if a key exists
  since: 1.0.0
  group: generic
127.0.0.1:6379> exists age
(integer) 1
127.0.0.1:6379> exists name
(integer) 0
//--------EXPIRE-------
127.0.0.1:6379> expire age 10
(integer) 1
127.0.0.1:6379> ttl age
(integer) 8
127.0.0.1:6379> ttl age
(integer) 6
127.0.0.1:6379> ttl age
(integer) -2
127.0.0.1:6379> ttl age
(integer) -2  #当这个key过期了,那么此时查询出来就是-2 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set age 10 #如果没有设置过期时间
OK
127.0.0.1:6379> ttl age
(integer) -1  # ttl的返回值就是-1 
3、String类型:
String类型,也就是字符串类型,是Redis中最简单的存储类型
根据字符串的格式不同,可以分为三类:
- string:普通字符串
 - int:整数类型,可以做自增,自减操作
 - float:浮点类型,可以做自增、自己操作
 
String类型常见的命令有:
- SET:添加或者修改key对应的value
 - GET:根据key获取String类型的value
 - MSET:批量添加多个String类型的键值对
 - MGET:根据多个key获取多个String类型的value
 - INCR:让一个整型的key自增1
 - INCRBY:让一个整型的key自增并指定步长,例如:incrby num 2 让num值自增2
 - INCRBYFLOAT:让一个浮点类型的数字自增并指定步长
 - SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行
 - SETEX:添加一个String类型的键值对,并且指定有效期
 
贴心小提示:以上命令除了INCRBYFLOAT 都是常用命令
- SET 和GET: 如果key不存在则是新增,如果存在则是修改
 
127.0.0.1:6379> set name Rose  //原来不存在
OK
127.0.0.1:6379> get name 
"Rose"
127.0.0.1:6379> set name Jack //原来存在,就是修改
OK
127.0.0.1:6379> get name
"Jack" 
- MSET和MGET
 
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> MGET name age k1 k2 k3
1) "Jack" //之前存在的name
2) "10"   //之前存在的age
3) "v1"
4) "v2"
5) "v3" 
- INCR和INCRBY和DECY
 
127.0.0.1:6379> get age 
"10"
127.0.0.1:6379> incr age //增加1
(integer) 11
    
127.0.0.1:6379> get age //获得age
"11"
127.0.0.1:6379> incrby age 2 //一次增加2
(integer) 13 //返回目前的age的值
    
127.0.0.1:6379> incrby age 2
(integer) 15
    
127.0.0.1:6379> incrby age -1 //也可以增加负数,相当于减
(integer) 14
    
127.0.0.1:6379> incrby age -2 //一次减少2个
(integer) 12
    
127.0.0.1:6379> DECR age //相当于 incr 负数,减少正常用法
(integer) 11
    
127.0.0.1:6379> get age 
"11"
 
- SETNX
 
127.0.0.1:6379> help setnx
  SETNX key value
  summary: Set the value of a key, only if the key does not exist
  since: 1.0.0
  group: string
127.0.0.1:6379> set name Jack  //设置名称
OK
127.0.0.1:6379> setnx name lisi //如果key不存在,则添加成功
(integer) 0
127.0.0.1:6379> get name //由于name已经存在,所以lisi的操作失败
"Jack"
127.0.0.1:6379> setnx name2 lisi //name2 不存在,所以操作成功
(integer) 1
127.0.0.1:6379> get name2 
"lisi" 
- SETEX
 
127.0.0.1:6379> setex name 10 jack
OK
127.0.0.1:6379> ttl name
(integer) 8
127.0.0.1:6379> ttl name
(integer) 7
127.0.0.1:6379> ttl name
(integer) 5









