Redis 的五大数据类型

Redis一般是不在Windows系统中操作,但是对于零基础的学习者来说,windows版的Redis能上手更快,之后还会出适用于企业级开发的Linux版Redis教程。

在学习Redis时,首先得在Windows中进行安装。

1. Redis的Windows版安装使用

下载地址 : https://github.com/MSOpenTech/redis/tags

下载解压后可以直接使用

核心文件 :

  • redis-server.exe 服务启动命令
  • redis-cli.exe 客户端启动
  • redis.windows.conf redis核心配置文件
  • redis-benchmark.exe 性能测试工具
  • redis-check-aof.exe AOF文件修复工具
  • redis-check-dump.exe RDB文件修复工具

进入Redis的安装目录cmd启动Redis服务器和客户端 :

服务端启动 :

端口(Port) : 6379

PID : 随机产生

客户端连接:

在介绍Redis的五大数据类型之前,先要懂得一些基本操作

2. Redis的基本操作

信息添加

  • 功能 : 设置key,value数据
  • 命令 :
1
set key value
  • 例 :
1
set name zhangsan

信息查询

  • 功能 : 根据key查询出对应的value,如果不存在,则返回空(nil)
  • 命令 :
1
get key
  • 例 :
1
get name

清屏命令

  • 功能 :清除屏幕信息
  • 命令 :
1
clear

退出客户端命令

  • 功能 : 退出客户端
  • 命令 :
1
2
quit
exit

帮助命令

  • 获取命令帮助文档,获取组中所有命令信息名称
  • 命令 :
1
2
help 命令名称
help @组名

3. Redis五大数据类型

Redis的五大数据类型分别是 :

  • string
  • hash
  • list
  • set
  • sorted_set

3.1 string

redis数据存储格式

  • redis 就相当于一个Map,采用的是key : value 的形式存储数据。
  • 数据类型指的是存储的数据的类型,也就是value部分的类型,而key永远都是字符串。

3.1.1 string 类型数据的基本操作

  • 添加/修改数据
1
set key value
  • 获取数据
1
get key
  • 删除数据
1
del key

  • 添加/修改多个数据
1
mset key1 value1 key2 value2 ...
  • 获取多个数据
1
mget key1 key2 ...
  • 获取字符串长度
1
strlen key
  • 追加信息到原始信息后部(若信息不存在,则新建)
1
append key value

3.1.2 string 类型数据的拓展操作

  • 设置数值数据增加指定范围的值
1
2
3
incr key 
incrby key increment
incrbyfloat key increment
  • 设置数值数据减少指定范围的值
1
2
decr key
decrby key increment
  • 设置数据具有指定的生命周期
1
2
setex key seconds value
psetex key milliseconds value

3.1.3 string 类型数据操作的注意事项

  • 数据操作不成功的反馈与数据正常操作之间的差异

    ① 表示运行结果是否成功

    • (integer) 0 —> false 失败
    • (integer) 1 —> true 成功

    ② 表示运行结果值

    • (integer) 3 —> 3 3个
    • (integer) 1 —> 1 1个
  • 数据没获取到

    ​ (nil) ,相当于null

  • 数据最大存储量

    ​ 512MB

3.1.4 Key的设置约定

  • 数据库中的key命名惯例 :

    表名 : 主键名 : 主键值 : 字段名

eg : order : id : xxxxx : name

3.2 hash

存储结构 : 一个存储空间保存多个键值对数据

hash类型 : 底层使用哈希表结构实现数据存储

图例 :

3.2.1 hash类型数据的基本操作

  • 添加/修改数据
1
hset key field value
  • 获取数据
1
2
hget key field
hgetall key
  • 删除数据
1
hdel key field1 [field2]

  • 添加/修改多个数据
1
hmset key field1 value1 field2 value2 ...
  • 获取多个数据
1
hmget key field1 field2 ...
  • 获取哈希表中字段的数量
1
hlen key
  • 判断哈希表中是否存在指定的字段
1
hexists key field

3.2.2 hash类型数据的拓展操作

  • 获取哈希表中所有的字段名或字段值
1
2
hkeys key
hvals key
  • 设置指定字段的数值数据增加指定范围的值
1
2
hincrby key field increment
hincrbyfloat key field increment

3.3 list

存储结构 : 一个存储空间保存多个数据,且,通过数据可以体现出进入顺序。

list类型 : 保存多个数据,底层使用双向链表存储结构实现

list数据类型图例 :

3.3.1 list类型数据的基本操作

  • 添加/修改数据
1
2
lpush key value1 [value2] ...
rpush key value1 [value2] ...
  • 获取数据
1
2
3
lrange key start stop 
lindex key index
llen key
  • 获取并移除数据
1
2
lpop key
rpop key

3.3.2 list类型数据的拓展操作

  • 规定时间内获取并移除数据
1
2
3
blpop key1 [key2] timeout
brpop key1 [key2] timeout
brpoplpush source desination timeout
  • 移除指定数据
1
lrem key count value

3.4 set

set类型 : 与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的。

3.4.1 set类型数据的基本操作

  • 添加数据
1
sadd key member1 [member2]
  • 获取全部数据
1
smembers key
  • 删除数据
1
srem key member1 [member2]
  • 获取集合的数据总量
1
scard key
  • 判断集合中是否包含指定数据
1
sismember key member

3.4.2 set类型数据的拓展操作

  • 随机获取集合中指定数量的数据
1
srandmember key [count]
  • 随机获取集合中的某个数据并将该数据移出集合
1
spop key [count]
  • 求两个集合的交、并、差集
1
2
3
sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
  • 求两集合的交、并、差集并存储到指定集合中
1
2
3
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
  • 将指定数据从原始集合中移动到目标集合中
1
smove source destination member

3.5 sorted_set

sorted_set类型 : 在set的存储结构基础上添加可排序字段

图示 :

3.5.1 sorted_set 类型数据的基本操作

  • 添加数据
1
zadd key score1 member1 [score2 member2]
  • 获取全部数据
1
2
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]
  • 删除数据
1
zrem key member [member ...]
  • 按条件获取数据
1
2
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrevrangebyscore key max min [WITHSCORES]
  • 条件删除数据
1
2
zremrangebyrank key start stop
zremrangebyscore key min max

注意:

  • min与max用于限定搜索查询的条件

  • start与stop用于限定查询范围,作用于索引,表示开始和结束索引

  • offset与count用于限定查询范围,作用于查询结果,表示开始位置和数据总量

  • 获取集合数据总量

1
2
zcard key 
zcount key min max
  • 集合交、并操作
1
2
zinterstore destination numkeys key [key ...] 
zunionstore destination numkeys key [key ...]

3.5.2 sorted_set类型数据的拓展操作

  • 获取数据对应的索引(排名)
1
2
zrank key member
zrevrank key member
  • score值获取与修改
1
2
zscore key member
zincrby key increment member
  • 获取当前系统时间
1
time