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 | quit |
帮助命令
- 获取命令帮助文档,获取组中所有命令信息名称
- 命令 :
1 | 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 | incr key |
- 设置数值数据减少指定范围的值
1 | decr key |
- 设置数据具有指定的生命周期
1 | setex key seconds 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 | hget key field |
- 删除数据
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 | hkeys key |
- 设置指定字段的数值数据增加指定范围的值
1 | hincrby key field increment |
3.3 list
存储结构 : 一个存储空间保存多个数据,且,通过数据可以体现出进入顺序。
list类型 : 保存多个数据,底层使用双向链表存储结构实现

list数据类型图例 :

3.3.1 list类型数据的基本操作
- 添加/修改数据
1 | lpush key value1 [value2] ... |
- 获取数据
1 | lrange key start stop |
- 获取并移除数据
1 | lpop key |
3.3.2 list类型数据的拓展操作
- 规定时间内获取并移除数据
1 | blpop key1 [key2] 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 | sinter key1 [key2] |
- 求两集合的交、并、差集并存储到指定集合中
1 | sinterstore 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 | zrange key start stop [WITHSCORES] |
- 删除数据
1 | zrem key member [member ...] |
- 按条件获取数据
1 | zrangebyscore key min max [WITHSCORES] [LIMIT] |
- 条件删除数据
1 | zremrangebyrank key start stop |
注意:
min与max用于限定搜索查询的条件
start与stop用于限定查询范围,作用于索引,表示开始和结束索引
offset与count用于限定查询范围,作用于查询结果,表示开始位置和数据总量
获取集合数据总量
1 | zcard key |
- 集合交、并操作
1 | zinterstore destination numkeys key [key ...] |
3.5.2 sorted_set类型数据的拓展操作
- 获取数据对应的索引(排名)
1 | zrank key member |
- score值获取与修改
1 | zscore key member |
- 获取当前系统时间
1 | time |




