1. Redis 数据结构介绍
Redis 是一个 key-value 的数据库,key 一般是 String 类型,value 的类型可以有多种。
Redis 中的常见数据类型:
Redis 的官方帮助文档:https://redis.io/commands/。
2. Redis 的通用命令
通用指令是部分数据类型的,都可以使用的指令。
2.1 select:切换到指定的数据库
使用 select 可以切换到指定的 Redis 数据库,Redis 中的数据库使用索引号 index 进行命名,以 0 作为起始索引值。默认使用 0 号数据库。
语法:
select index
示例:
2.2 keys:查看符合匹配规则的所有key
keys 的用法:
使用 keys 可以通过正则匹配查询数据库中所有符合匹配规则的 key。
语法:
keys 正则匹配规则
由于这种匹配方式是模糊匹配,所以查询符合匹配规则的 key 效率不高,
示例:
2.3 del:删除指定的 key
del 的用法:
可以使用 del 删除一个或多个指定的 key,会返回删除 key 的个数。
语法:
del key [key key ...]
向提取通过 Redis 图形化客户端添加 key
示例:
2.4 exists:判断 key 是否存在
exists 的用法:
可以使用 exists 判断一个或多个 key 是否存在,如果 key 存在返回1,如果 key 不存在返回0。
如果判断多个 key 是否存在,只要有一个 key 存在就返回1,只有所有的 key 都不存在才返回0。
语法:
exists key [key key ...]
示例:
2.5 expire:给一个 key 设置有效期
expire 的用法:
可以使用 expire 为一个指定的 key 设置其存活的有效期,当 key 的有效期到时,这个 key 会自动被删除。key 的有效时间的单位是秒。设置有效时间成功,返回1,失败返回0。
语法:
expire key seconds [NX|XX|GT|LT]
- 该命令支持一组选项:
- NX – 仅在 key 没有设置有效时间时设置 key 的有效时间
- XX – 仅当 key 没有过期时设置 key 的有效时间
- GT – 仅当新的有效时间大于当前的有效时间时设置 key 的有效时间
- LT – 仅当新的有效时间小于当前的有效时间时设置 key 的有效时间
示例:
设置有效时间时不带参数:
2.6 ttl:查看一个 key 的剩余有效期
ttl 的用法:
可以使用 ttl 查看指定的 key 的剩余有效时间,会返回指定的 key 的剩余有效时间。对于永久有效的 key 返回的剩余有效时间为 -1,对于失效的 key 返回的剩余有效时间为 -2。
语法:
ttl key
如果新创建的 key-value 没有指定有效时间,那么这个键值对的存活有效时间为永久有效。
示例:
3. Redis 常见数据类型
3.1 String 类型
3.1.1 String 类型概述
String 类型就是字符串类型。
对于 key 对应的 value 的数据类型为 String类型,根据字符串的格式不同,又分为三类:
1.String:普通字符串;
2.int:整数类型,可以做自增或自减操作;
3.float:浮点类型,可以做自增或自减操作。
对于上面三类,如果 value 是简单的字符串,Redis 会将每个字符转换为对应的字符编码进行存储;如果 value 是数值类型(int或float),Redis 会将其转化为对应的二进制数值进行存储。
注意:字符串类型的最大空间不超过512M。
3.1.2 String 类型常见命令
get:根据key获取String类型的value
get 的用法:
语法:
get key
使用 get 可以获取指定的 key 对应的 value 值,如果 key 存在则返回对应的 value 值,如果 key 不存在则返回 nil。
示例:
mget:根据多个key获取多个String类型的value
mget 的用法:
语法:
mget key [key ...]
使用 mget 可以获取指定的多个 key 对应的 value 值,对于存在的 key 返回对应的 value 值,对于不存在的 key 不存在则返回 nil。
示例:
set:添加或者修改已经存在的一个String类型的键值对
set 的用法:
语法:
SET key value [NX | XX] [GET] [EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
- EX seconds – 设置新键值对的有效期,以秒为单位
- PX milliseconds – 设置新键值对的有效期,以毫秒为单位
- EXAT timestamp-seconds – 设置新键值对的过期时间(什么时候过期,时间使用时间戳),以秒为单位
- PXAT timestamp-milliseconds – 设置新键值对的过期时间(什么时候过期,时间使用时间戳),以毫秒为单位
- NX – 当该键值对不存在时新建键值对
- XX – 当该键值对已经存在时新建键值对
- KEEPTTL – 保留 key 的存活时间
- GET – 返回存储在键的旧字符串,如果键不存在,则返回 nil。如果存储在键的值不是字符串,则会返回错误并中止。
使用 set 添加或修改已经存在的键值对,成功返回新键值对的 ok,失败则返回 nil。
示例:
mset:批量添加多个String类型的键值对
mset 的用法:
语法:
mset key value [key value ...]
使用 mset 添加多个键值对,成功则返回OK.
示例:
incr:让一个key对应的为整型的value自增1
语法:
incr key
使用 incr 可以让一个 key 对应的为整型类型 value 的值自增加一,返回值为 自增加一后的新 value值。
如果指定的 key 不存在,则会新增一个键值对,同时新键值对的 value 值为1。如果指定的 key 对应的 value 的类型不为整型,则报错。
示例:
incrby:让一个key对应的为整型的value自增并指定步长
语法:
incrby key 自增步长