1、数据类型介绍
1.1Redis的5种数据类型
redis是一种高级的key-value的存储系统,键是string类型,其中value支持五种数据类型,对于键和值的描述如下所示:
键(key):
【1】key值不能重复
【2】作用:标识存储的数据
【3】数据类型:string
【4】命名规则:
1)不能太长:因为查询的效率低,查询起来不方便
2)不能太短:容易重复,同时可读性也差
3)按照规范:HEIMA_STU_LIST
值(value): 支持5种数据类型
值的数据类型 | 值的格式说明 |
---|---|
string | 字符串类型,类似于Java中String |
hash | 由键值对组成,类似于Java中Map |
list | 列表类型,类似于Java中List,元素是存取有序,可以重复。 |
set | 集合类型,类似于Java中Set,元素是存取无序,不可重复 |
sorted set/zset | 有序的集合类型,每个元素有一个分数用来决定它的顺序。 |
编辑
2、string类型的操作命令
目标
学习操作String类型数据的命令
字符串类型string
字符串类型是Redis中最为基础的数据存储类型,它在Redis中以二进制保存。无论存入的是字符串、整数、浮点类型都会以字符串写入。
在Redis中字符串类型的值最多可以容纳的数据长度是512M,这是以后最常用的数据类型。
编辑
常用命令
命令 | 功能 |
---|---|
set 键 值 | 添加或修改一个键和值,键不存在就是添加,存在就是修改 |
get 键 | 获取值,如果存在就返回值,不存在返回nil(就是C语言中NULL) |
del 键 | 删除指定的键和值,返回删除的个数 |
补充: 批量操作: mset name lisi addr sh mget name age addr del name age
命令演示
- 添加一个键为name,值为zhangsan
- 再设置一个键为age,值为13
- 得到name和age的值
- 删除name
- 批量添加name lisi addr sh
- 批量获取name age addr的值
- 批量删除name age
- 修改addr的值为bj
执行效果
编辑
小结
- 添加值: set 键 值
- 获取值:get 键
- 删除值:del 键
3、hash类型的操作命令
目标
学习hash类型的几个操作命令
概述
Redis中的Hash类型可以看成是键和值都是String类型的Map容器,每一个Hash可以存储4G个键值对。
编辑
该类型非常适合于存储对象的信息。如一个用户有姓名,密码,年龄等信息,则可以有username、password和age等键。它的存储结构如下:
编辑
常用命令
命令 | 功能 |
---|---|
hset 键 字段 值 | 添加键,字段,值 |
hget 键 字段 | 通过键,字段得到值 |
hmset 键 字段 值 字段 值 | multiply多个,一次添加多个字段和值 |
hmget 键 字段 字段 | 通过键,获取多个字段和值 |
hdel 键 字段 字段 | 删除一个或多个字段的值 |
hgetall 键 | 得到这个键下所有的字段和值 |
命令演示
- 创建hash类型的键为person,并且添加一个字段为name,值为zhangsan
- 向person中添加字段为age,值为13
- 向person中批量添加字段为addr,值为sh;字段为company,值为yunda
- 分别得到person中的name、age的字段值
- 批量得到person中的name、age和addr的字段值
- 获取person中所有的字段以及对应的值
- 删除person中的name
- 批量删除person中的age、addr以及company
编辑
小结
功能 | HASH类型的操作命令 |
---|---|
添加值 | hset |
得到值 | hget |
删除值 | hdel |
添加多个字段 | hmset |
得到多个字段值 | hmget |
得到所有字段的值 | hgetall |
4、list类型的操作命令
目标
学习list类型的操作命令
概述
在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其左部(left)和右部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4G个。
编辑
常用命令
命令 | 行为 |
---|---|
lpush 键 元素 元素… | left 从左边向指定的键中添加1个或多个元素,返回列表中元素的个数 |
rpush 键 元素 元素… | right 从右边向指定的键中添加1个或多个元素 |
lpop 键 | 从左边删除一个元素,返回被删除的元素 |
rpop 键 | 从右边删除一个元素,返回被删除的元素 |
lrange 键 开始 结束 | 得到键中指定范围的元素的数据 每个元素都有一个索引号,从左向右0 |
lindex 键 索引值 | 查询指定索引的元素 |
llen 键 | 获取列表的长度 |
命令演示
编辑
命令演示
-
向mylist键的列表中,从左边添加a b c三个元素
-
从右边添加one two three三个元素
-
查询索引0到2的数据
-
查询所有的元素
-
查询索引是2的数据
-
从右边添加一个重复的元素three
-
删除最左边的元素c
-
删除最右边的元素three
-
获取列表中元素的个数 :llen mylist
【效果】
编辑
小结
- 从左边添加元素: lpush
- 从右边添加元素:rpush
- 从左边删除元素:lpop
- 从右边删除元素:rpop
- 得到指定范围的元素:lrange
- 得到列表的长度:llen
5、set类型的操作命令
目标
学习set类型的操作命令
概述
在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。Set可包含的最大元素数量是4G,和List类型不同的是,Set集合中不允许出现重复的元素。
编辑
编辑
常用命令
命令 | 行为 |
---|---|
sadd 键 元素 元素… | 向一个键中添加1个或多个元素 |
smembers 键 | 得到这个集合中所有的元素 |
sismember 键 元素 | 判断指定的元素在集合中是否存在,存在返回1,不存在返回0 |
srem 键 元素 元素… | 通过键删除一个或多个元素 |
命令演示
1. 向myset集合中添加A B C 1 2 3 六个元素
2. 再向myset中添加B元素,看能否添加成功
3. 显示所有的成员,发现与添加的元素顺序不同,元素是无序的
4. 删除其中的C这个元素,再查看结果
5. 判断A是否在myset集合中
6. 判断D是否在myset集合中
-
向myset集合中添加A B C 1 2 3 六个元素
-
再向myset中添加B元素,看能否添加成功
-
显示所有的成员,发现与添加的元素顺序不同,元素是无序的
-
删除其中的C这个元素,再查看结果
编辑
-
判断A是否在myset集合中
-
判断D是否在myset集合中
编辑
小结
- 添加元素:sadd
- 删除元素:srem
- 得到所有元素:smembers
- 判断元素是否存在:sismember
6、zset/sorted set类型的操作命令
目标
学习zset命令的操作
概述
Redis 有序集合(sorted set)和set集合一样也是无序不可以重复。不同的是每个元素都会关联一个分数(排序因子)。
redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复,每个集合可存储40多亿个成员。
编辑
编辑
命令
命令 | 行为 |
---|---|
zadd 键 分数 值 分数 值 | 添加1个或多个元素,每个元素都有一个分数 |
zrange 键 开始索引 结束索引 | 获取指定范围的元素,得到所有的元素,索引是0到-1 |
zrange 键 开始索引 结束索引 withscores | 查询指定的元素和对应的分数 |
zrevrange 键 开始索引 结束索引 withscores | 按照分数倒叙获取指定的元素和对应的分数 |
zrem 键 值 值 | 删除一个或多个值 |
zcard 键 | 得到元素个数 |
zrank 键 值 | 得到元素的索引号 |
zscore 键 值 | 得到元素的分数 |
操作
-
添加键country,分数是10,值是Japan
-
添加键country,分数是5,值是USA,添加键country,分数是50,值是Russia
-
添加键country,分数是1,值是China,分数是120,值是Korea
-
查询country中所有的元素
编辑
-
查询所有的元素和对应的分数
-
按照分数倒叙获取所有的元素和对应的分数
编辑
-
查询索引是0 到 1的值
编辑
-
查询Japan的索引号(从0开始)
-
删除值为USA的元素
-
查询country中还有多少个元素
-
显示Russia的分数值
编辑
小结
命令 | 行为 |
---|---|
zadd | 添加 |
zrange | 查询 |
zrem | 删除 |
zcard | 个数 |
zrank | 索引号 |
zscore | 得到分数 |
第四章、Redis的其他操作
1、Redis的通用命令
目标
学习redis中通常的操作命令
常用命令
命令 | 功能 |
---|---|
keys 匹配字符 | 查询所有的键,可以使用通配符 ***** 匹配多个字符 ? 匹配1个字符 |
del 键1 键2 | 删除任何的值类型,而且可以同时删除多个键 |
exists 键 | 判断指定的键是否存在 |
type 键 | 判断指定的键,值的类型。返回是类型的名字 |
select 数据库编号 | 选择其它的数据库 |
move 键 数据库编号 | 将当前数据库中指定的键移动到另一个数据库中 |
expire 键 时间 | 为当前key设置过期时间(单位是秒) |
命令演示
-
添加字符串name的值为zhangsan, myset 的值为20
-
显示所有的键
-
显示所有以my开头的键
-
显示所有my后面有三个字符的键
-
添加一个字符串:name2 lisi
-
添加一个list:name3 a b c d
编辑
-
显示所有的键
-
一次删除name2和name3这两个键,其中name2和name3是不同的类型,显示所有键
-
分别判断name和name2是否存在
编辑
-
分别判断name user myset mylist分别是什么类型
-
切换数据库到15,向15中添加一个name2 wangwu,得到name2的值显示。
-
将15中的name2移到0中
-
切换到数据库0,显示所有的键
编辑
小结
- keys:找到所有的键,通配符: ?*
- exists:判断指定的键是否存在
- type:判断指定键值的类型
- select:切换数据库默认是0-15
- move:将键移动另一个数据库
- del: 删除多个键