Redis数据结构介绍
Redis是一个key-value的数据库,key一般是string类型,不过value的类型多种多样:
- string《 hello world 》
- Hash《 {name: “jack”, age: 12} 》
- List 《 [A -> B -> C -> C] 》
- Set 《 {A, B, C} 》
- SortedSet 《 {A: 1, B: 2, C: 3} 》
- GEO 《 {A: (120.3, 30.5)} 》
- BitMap 《 01110101010101 》
- HyperLog《 01110101010101 》
还有更多,常见的是前面的五种,也叫基本类型。
Redis通用命令
通用命令是不分数据类型的,都可以使用的命令,常见的有:
- KEYS 查看符合模板(pattern)的所有key
使用(返回所有的key,不建议在生产环境下使用)
查询所有的key
KEYS *
查询以a开头的key
KEYS a*
如果数据很多,别用这个,因为Redis是单线程,所以执行KEYS 的时候,会花很多时间,整个Redis服务被阻塞,其他的命令无法执行。
- DEL 删除一个指定的key
使用(可以删除一个或多个,返回删除的个数)
DEL name
DEL name age
- EXISTS 判断key是否存在
使用(可以判断一个或多个,返回存在的个数)
EXISTS name
EXISTS name age
-
EXPIRE:给一个key设置有效期(单位是秒),有效期到时该key会自动被删除
-
TTL:查看一个key的剩余有效期(被删除后,返回-2。返回-1,就代表永久有效。)
使用
EXPIRE name 20
TTL name
所以一般情况下,给Redis存入数据时,可能会建议设置有效期,不设置就永久了。
string类型
字符串类型是Redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可分为3类:
- string 普通字符串
- int 整数类型,可以做自增自减的操作
- float 浮点类型,可以做自增自减的操作
这三个不管是那种形式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型最大空间不能超过512M
string类型的常见命令如下:
- SET:添加或修改已经存在的一个string类型的键值对
set name rose
- GET:根据key获取string类型的value
get name
- MSET:批量添加多个string类型的键值对
MSET k1 v1 k2 v2
- MGET:根据多个key获取多个string类型的value
MGET k1 k2
- INCR:让一个整形的key自增1
INCR age
- INCRBY