第三章、Redis的5种数据类型

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 有序的集合类型,每个元素有一个分数用来决定它的顺序。

第三章、Redis的5种数据类型_第1张图片

2、string类型的操作命令

目标

学习操作String类型数据的命令

字符串类型string

字符串类型是Redis中最为基础的数据存储类型,它在Redis中以二进制保存。无论存入的是字符串、整数、浮点类型都会以字符串写入。

在Redis中字符串类型的值最多可以容纳的数据长度是512M,这是以后最常用的数据类型。

第三章、Redis的5种数据类型_第2张图片

常用命令

命令 功能
set 键 值 添加或修改一个键和值,键不存在就是添加,存在就是修改
get 键 获取值,如果存在就返回值,不存在返回nil(就是C语言中NULL)
del 键 删除指定的键和值,返回删除的个数
补充:
批量操作:
mset  name lisi   addr sh
mget name  age addr
del  name age 

命令演示

  1. 添加一个键为name,值为zhangsan

  2. 再设置一个键为age,值为13

  3. 得到name和age的值

  4. 删除name

  5. 批量添加name lisi addr sh

  6. 批量获取name age addr的值

  7. 批量删除name age

  8. 修改addr的值为bj

执行效果

第三章、Redis的5种数据类型_第3张图片

小结

  1. 添加值: set 键 值

  2. 获取值:get 键

  3. 删除值:del 键

3、hash类型的操作命令

目标

学习hash类型的几个操作命令

概述

Redis中的Hash类型可以看成是键和值都是String类型的Map容器,每一个Hash可以存储4G个键值对。

第三章、Redis的5种数据类型_第4张图片

该类型非常适合于存储对象的信息。如一个用户有姓名,密码,年龄等信息,则可以有username、password和age等键。它的存储结构如下:

第三章、Redis的5种数据类型_第5张图片

常用命令

命令 功能
hset 键 字段 值 添加键,字段,值
hget 键 字段 通过键,字段得到值
hmset 键 字段 值 字段 值 multiply多个,一次添加多个字段和值
hmget 键 字段 字段 通过键,获取多个字段和值
hdel 键 字段 字段 删除一个或多个字段的值
hgetall 键 得到这个键下所有的字段和值

命令演示

  1. 创建hash类型的键为person,并且添加一个字段为name,值为zhangsan

  2. 向person中添加字段为age,值为13

  3. 向person中批量添加字段为addr,值为sh;字段为company,值为yunda

  4. 分别得到person中的name、age的字段值

  5. 批量得到person中的name、age和addr的字段值

  6. 获取person中所有的字段以及对应的值

  7. 删除person中的name

  8. 批量删除person中的age、addr以及company

第三章、Redis的5种数据类型_第6张图片

小结

功能 HASH类型的操作命令
添加值 hset
得到值 hget
删除值 hdel
添加多个字段 hmset
得到多个字段值 hmget
得到所有字段的值 hgetall

4、list类型的操作命令

目标

学习list类型的操作命令

概述

在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其左部(left)和右部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4G个。

第三章、Redis的5种数据类型_第7张图片

常用命令

命令 行为
lpush 键 元素 元素... left 从左边向指定的键中添加1个或多个元素,返回列表中元素的个数
rpush 键 元素 元素... right 从右边向指定的键中添加1个或多个元素
lpop 键 从左边删除一个元素,返回被删除的元素
rpop 键 从右边删除一个元素,返回被删除的元素
lrange 键 开始 结束 得到键中指定范围的元素的数据 每个元素都有一个索引号,从左向右0~n 从右向左索引号:-1~-(n+1),每个元素有2个索引号 如果要取出整个列表中所有的元素,索引号应该是:0~-1
lindex 键 索引值 查询指定索引的元素
llen 键 获取列表的长度

命令演示

第三章、Redis的5种数据类型_第8张图片

命令演示

  1. 向mylist键的列表中,从左边添加a b c三个元素

  2. 从右边添加one two three三个元素

  3. 查询索引0到2的数据

  4. 查询所有的元素

  5. 查询索引是2的数据

  6. 从右边添加一个重复的元素three

  7. 删除最左边的元素c

  8. 删除最右边的元素three

  9. 获取列表中元素的个数 :llen mylist

    【效果】

    第三章、Redis的5种数据类型_第9张图片

小结

  1. 从左边添加元素: lpush

  2. 从右边添加元素:rpush

  3. 从左边删除元素:lpop

  4. 从右边删除元素:rpop

  5. 得到指定范围的元素:lrange

  6. 得到列表的长度:llen

5、set类型的操作命令

目标

学习set类型的操作命令

概述

在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。Set可包含的最大元素数量是4G,和List类型不同的是,Set集合中不允许出现重复的元素。

第三章、Redis的5种数据类型_第10张图片

第三章、Redis的5种数据类型_第11张图片

常用命令

命令 行为
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集合中

  1. 向myset集合中添加A B C 1 2 3 六个元素

  2. 再向myset中添加B元素,看能否添加成功

  3. 显示所有的成员,发现与添加的元素顺序不同,元素是无序的

  4. 删除其中的C这个元素,再查看结果

    第三章、Redis的5种数据类型_第12张图片

  5. 判断A是否在myset集合中

  6. 判断D是否在myset集合中

    第三章、Redis的5种数据类型_第13张图片

小结

  1. 添加元素:sadd

  2. 删除元素:srem

  3. 得到所有元素:smembers

  4. 判断元素是否存在:sismember

6、zset/sorted set类型的操作命令

目标

学习zset命令的操作

概述

Redis 有序集合(sorted set)和set集合一样也是无序不可以重复。不同的是每个元素都会关联一个分数(排序因子)。

redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复,每个集合可存储40多亿个成员。

第三章、Redis的5种数据类型_第14张图片第三章、Redis的5种数据类型_第15张图片

命令

命令 行为
zadd 分数 分数 添加1个或多个元素,每个元素都有一个分数
zrange 开始索引 结束索引 获取指定范围的元素,得到所有的元素,索引是0到-1
zrange 键 开始索引 结束索引 withscores 查询指定的元素和对应的分数
zrevrange 键 开始索引 结束索引 withscores 按照分数倒叙获取指定的元素和对应的分数
zrem 键 值 值 删除一个或多个值
zcard 得到元素个数
zrank 得到元素的索引号
zscore 键 值 得到元素的分数

操作

  1. 添加键country,分数是10,值是Japan

  2. 添加键country,分数是5,值是USA,添加键country,分数是50,值是Russia

  3. 添加键country,分数是1,值是China,分数是120,值是Korea

  4. 查询country中所有的元素

    第三章、Redis的5种数据类型_第16张图片

  5. 查询所有的元素和对应的分数

  6. 按照分数倒叙获取所有的元素和对应的分数

    第三章、Redis的5种数据类型_第17张图片

  7. 查询索引是0 到 1的值

  8. 查询Japan的索引号(从0开始)

  9. 删除值为USA的元素

  10. 查询country中还有多少个元素

  11. 显示Russia的分数值

    第三章、Redis的5种数据类型_第18张图片

小结

命令 行为
zadd 添加
zrange 查询
zrem 删除
zcard 个数
zrank 索引号
zscore 得到分数

第四章、Redis的其他操作

1、Redis的通用命令

目标

学习redis中通常的操作命令

常用命令

命令 功能
keys 匹配字符 查询所有的键,可以使用通配符 * 匹配多个字符 ? 匹配1个字符
del 键1 键2 删除任何的值类型,而且可以同时删除多个键
exists 判断指定的键是否存在
type 判断指定的键,值的类型。返回是类型的名字
select 数据库编号 选择其它的数据库
move 数据库编号 将当前数据库中指定的键移动到另一个数据库中
expire 键 时间 为当前key设置过期时间(单位是秒)

命令演示

  1. 添加字符串name的值为zhangsan, myset 的值为20

  2. 显示所有的键

  3. 显示所有以my开头的键

  4. 显示所有my后面有三个字符的键

  5. 添加一个字符串:name2 lisi

  6. 添加一个list:name3 a b c d

    第三章、Redis的5种数据类型_第19张图片

  7. 显示所有的键

  8. 一次删除name2和name3这两个键,其中name2和name3是不同的类型,显示所有键

  9. 分别判断name和name2是否存在

    第三章、Redis的5种数据类型_第20张图片

  10. 分别判断name user myset mylist分别是什么类型

  11. 切换数据库到15,向15中添加一个name2 wangwu,得到name2的值显示。

  12. 将15中的name2移到0中

  13. 切换到数据库0,显示所有的键

第三章、Redis的5种数据类型_第21张图片

小结

  1. keys:找到所有的键,通配符:* ?

  2. exists:判断指定的键是否存在

  3. type:判断指定键值的类型

  4. select:切换数据库默认是0-15

  5. move:将键移动另一个数据库

  6. del: 删除多个键

你可能感兴趣的:(redis,java,数据库)