Redis数据类型操作命令
Redis通用命令
- keys:查看符合模板的所有key
因为keys命令使用的是模糊查序,比较耗性能,由于有redis是单线程,因此在生成情况下不建议使用该命令。 - del:删除一个或者多个key
- exists:判断一个key是否存在
- expire:给一个key设置有效期,有效期到期时刻key会被自动删除。
- ttl:查看一个KEY的剩余有效期,-1代表永久有效,-2代表无效
String类型
String类型,是Redis中最简单的存储类型。其value是字符串,不过格居字符串的格式不同,又可以分为3类:
- string:普通字符串。
- int:整数类型,可以做自增、自减操作
- float:浮点类型
不管是哪种类型,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512m
KEY | VALUE |
---|---|
msg | hello world |
num | 1.0 |
score | 92.5 |
- incr:让一个整数的key自增1
- incrby:让key指定步长增长
- incrbyfloat:指定浮点数增长
- setnx:添加一个String类型的键值对,前提是这个key不存在,否则不执行
- setex:添加一个String类型的键值对,并且指定有效期。setex name 10 jack与set name jack ex 10 等效
## key的结构
- 一般用[项目名]:[业务名]:[类型]:id来命令键
Hash类型
由于String结构是将对象序列化位JSON字符串后存储,当需要修改对象某个字段时很不方便
Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:
Hash类型的常见命令
List类型
可以看作一个双向链表。
- 有序
- 元素可以重复
- 插入和删除快
- 查序速度一般
常见的命令
Set类型
可以看作是一个value为null的HashMap。其特征:
- 无序
- 元素不可重复
- 查找快
- 支持交集、并集、差集等功能
常用命令
- sinter key1 key2 …:求key1与key2的交集
- sdiff key1 key2…:求key1与key2的差集
- sunion key1 key2:求key1与key2的并集
SortedSet类型
SortedSet中的每一个元素都有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表,其特性:
- 可排序
- 元素不重复
- 查询速度快
因为SortedSet的可排序特性,所以经常用来实现排行榜这样的功能。
常见命令
- 注意所有的排名默认都是升,如果要降序则在命令的Z后面添加REV即可