Redis
相关指令
开启redis-server --service-start停止redis-server --service-stop卸载redis-server --service-uninstall
查询指令
help 函数
数据类型
Redis是典型的key-value数据库,key一般是字符串,而value包含很多不同的数据类型:
Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网(
https://redis.io/commands )可以查看到不同的命令:
通用命令
查看符合模板的所有key
KEYS 名称(?表示一个字符,*表示多个字符)
删除指定的key
DEL key名字
删除多个key
DEL key名字1 key名字2#只删除名字一样的key
判断key是否存在
EXISTS key名字返回值为1是存在返回值为0是不存在
设置key的有效期
EXPIRE key名字 时间(秒)
查看key的剩余有效期
TTL key名字当你没有给key设置有效期,使用TTL时会返回-1,代表永久有效当TTL返回-2时,表示设置的有效期过期
String类型
String类型,也就是字符串类型,是Redis中最简单的存储类型。
其value是字符串,不过根据字符串的格式不同,又可以分为3类:
- string:普通字符串
- int:整数类型,可以做自增、自减操作
- float:浮点类型,可以做自增、自减操作
不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512m.
添加/修改键值对
如果存在键就是修改,不存在键就是添加
SET 键 值
查询键的值
GET 键
添加多个键值对
MSET 键1 值1 键2 值2
获取多个键的值
MGET 键1 键2
让整型key的值自增1
INCR 键
让整型key的值自增并指定步长
INCRBY 键 步长设置步长为负数可以自减,也可以使用 DECR
让浮点类型的数字自增并指定步长
INCRBYFLOAT 键 步长
添加一个String类型的键值对
前提是这个key不存在,否则不执行
SETNX 键 值也可以SET 键 值 NX
添加String类型的键值对,并且指定有效期
SETEX 键 时间(秒) 值也可以SET 键 值 ex 时间(秒)
key的结构
我们可以通过给key添加前缀加以区分。
Redis的key允许有多个单词形成层级结构,多个单词之间用':'隔开,格式如下:
项目名:业务名:类型:id
Hash类型
Hash类型,也叫散列,其value是一个无序字典
String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便:
Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:
添加或修改hash类型key的field的值
HSET key field value如果要改变某个值可以直接改变
获取一个hash类型key的field的值
HGET key field
批量添加多个hash类型key的field的值
HMSET key field value
批量获取多个hash类型key的field的值
HMGET key field
获取一个hash类型的key中的所有的field和value
HGETALL key
获取一个hash类型的key中的所有的field
HKEYS key
获取一个hash类型的key中的所有的value
hvals key
让一个hash类型key的字段值自增并指定步长
HINCRBY key field 步长步长可以是正数也可以是负数
添加一个hash类型的key的field值
前提是这个field不存在,否则不执行
HSETNX key field value
list类型
可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。
特点
- 有序
- 元素可以重复
- 插入和删除快
- 查询速度一般
向列表插入元素
左侧
LPUSH key element1 element2...
右侧
RPUSH key element element2...
移除并返回列表第一个元素
左侧第一个元素
LPOP key
右侧第一个元素
RPOP key
返回一段角标范围内的所有元素
LRANGE key star end
等待删除元素
在没有元素时等待指定时间,而不是直接返回nil
BLPOP key 时间(秒)BRPOP key 时间(秒)
圈起来的是等待时间
set类型
类型一个value为null的HashMap
特点:
- 无序
- 元素不可重复
- 查找快
- 支持交集、并集、差集等功能
向set中添加元素
SADD key member ...
移除set中的指定元素
SREM key member ...
返回set中元素个数
SCARD key
判断元素是否存在
SISMEMBER key member
获取set中所有元素
SMEMBERS key
求两个key的交集
SINTER key1 key2 ...
求差集
SDIFF key1 key2...#key1有但是key2没有
求并集
SUNION key1 key2
SortedSet类型
Redis的SortedSet是一个可排序的set集合。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。
- 可排序
- 元素不重复
- 查询速度快
因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。
注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可,例如:
- 升序
获取sorted set 中的指定元素的排名:ZRANK key member
- 降序
获取sorted set 中的指定元素的排名:ZREVRANK key memeber
添加或修改元素
默认升序排序
ZADD key score1 value1 score2 value2...
删除key的值
ZREM key member
获取sorted set 中元素的score值
ZSCORE key member
获取sorted set 中元素值的排名
排名从0开始
ZRANK key member
获取sorted set中的元素个数
ZCARD key
统计score值在范围内的元素的个数
ZCOUNT key min max
让sorted set中的指定元素自增
ZINCRBY key 步长 member
按照score排序后,获取指定排名范围内的元素
ZRANGE key min max
按照score排序后,获取指定score范围内的元素
ZRANGEBYSCORE key min max
求差集.交集.并集
ZDIFF.ZINTER.ZUNION