Redis

相关指令

开启redis-server --service-start停止redis-server --service-stop卸载redis-server --service-uninstall

查询指令

help 函数

0

数据类型

Redis是典型的key-value数据库,key一般是字符串,而value包含很多不同的数据类型:

0

Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网(

https://redis.io/commands )可以查看到不同的命令:

0

通用命令

查看符合模板的所有key

KEYS 名称(?表示一个字符,*表示多个字符)

0

删除指定的key

DEL key名字

0

删除多个key

DEL key名字1 key名字2#只删除名字一样的key

0

判断key是否存在

EXISTS key名字返回值为1是存在返回值为0是不存在

0

设置key的有效期

EXPIRE key名字 时间(秒)

0

查看key的剩余有效期

TTL key名字当你没有给key设置有效期,使用TTL时会返回-1,代表永久有效当TTL返回-2时,表示设置的有效期过期

0

String类型

String类型,也就是字符串类型,是Redis中最简单的存储类型。

其value是字符串,不过根据字符串的格式不同,又可以分为3类:

  • string:普通字符串
  • int:整数类型,可以做自增、自减操作
  • float:浮点类型,可以做自增、自减操作

不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512m.

添加/修改键值对

如果存在键就是修改,不存在键就是添加

SET 键 值

查询键的值

GET 键

0

添加多个键值对

MSET 键1 值1 键2 值2

获取多个键的值

MGET 键1 键2

0

让整型key的值自增1

INCR 键

0

让整型key的值自增并指定步长

INCRBY 键 步长设置步长为负数可以自减,也可以使用 DECR

0

让浮点类型的数字自增并指定步长

INCRBYFLOAT 键 步长

0

添加一个String类型的键值对

前提是这个key不存在,否则不执行

SETNX 键 值也可以SET 键 值 NX

0

添加String类型的键值对,并且指定有效期

SETEX 键 时间(秒) 值也可以SET 键 值 ex 时间(秒)

key的结构

我们可以通过给key添加前缀加以区分。

Redis的key允许有多个单词形成层级结构,多个单词之间用':'隔开,格式如下:

项目名:业务名:类型:id

0

0

Hash类型

Hash类型,也叫散列,其value是一个无序字典

String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便:

0

Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:

0

添加或修改hash类型key的field的值

HSET key field value如果要改变某个值可以直接改变

0

0

0

0

获取一个hash类型key的field的值

HGET key field

0

批量添加多个hash类型key的field的值

HMSET key field value

0

0

批量获取多个hash类型key的field的值

HMGET key field

0

获取一个hash类型的key中的所有的field和value

HGETALL key

0

获取一个hash类型的key中的所有的field

HKEYS key

0

获取一个hash类型的key中的所有的value

hvals key

0

让一个hash类型key的字段值自增并指定步长

HINCRBY key field 步长步长可以是正数也可以是负数

0

添加一个hash类型的key的field值

前提是这个field不存在,否则不执行

HSETNX key field value

0

list类型

可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。

特点

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

0

向列表插入元素

左侧

LPUSH key element1 element2...

右侧

RPUSH key element element2...

0

0

移除并返回列表第一个元素

左侧第一个元素

LPOP key

右侧第一个元素

RPOP key

0

0

返回一段角标范围内的所有元素

LRANGE key star end

0

等待删除元素

在没有元素时等待指定时间,而不是直接返回nil

BLPOP key 时间(秒)BRPOP key 时间(秒)

0

0

圈起来的是等待时间

set类型

类型一个value为null的HashMap

特点:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

向set中添加元素

SADD key member ...

0

移除set中的指定元素

SREM key member ...

0

返回set中元素个数

SCARD key

0

判断元素是否存在

SISMEMBER key member

0

获取set中所有元素

SMEMBERS key

0

求两个key的交集

SINTER key1 key2 ...

0

求差集

SDIFF key1 key2...#key1有但是key2没有

0

求并集

SUNION key1 key2

0

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...

0

0

删除key的值

ZREM key member

0

0

获取sorted set 中元素的score值

ZSCORE key member

0

获取sorted set 中元素值的排名

排名从0开始

ZRANK key member

0

获取sorted set中的元素个数

ZCARD key

0

统计score值在范围内的元素的个数

ZCOUNT key min max

0

让sorted set中的指定元素自增

ZINCRBY key 步长 member

0

按照score排序后,获取指定排名范围内的元素

ZRANGE key min max

0

按照score排序后,获取指定score范围内的元素

ZRANGEBYSCORE key min max

0

求差集.交集.并集

ZDIFF.ZINTER.ZUNION