Redis操作Set、Zset、Hash数据类型以及可视化工具的使用

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

10.3 Redis操作Set类型

特点: Set类型 Set集合 元素无序 不可以重复(如果放入了重复元素,会自动去掉重复元素)

key是String类型,value是Set类型(注:Redis中的key都是String类型)

1.内存存储模型

在这里插入图片描述

2.常用操作指令

命令 说明
sadd 没有Set时创建,之后向key对应的类型为Set的value添加元素
smembers 显示key对应的Set集合中所有元素 (无序)
scard 返回key对应的Set集合中元素的个数
spop 随机返回一个(多个)元素 并将元素在Set集合中删除
smove 从一个Set集合中向另一个Set集合移动元素 必须是同一种类型
srem 从key对应的Set集合中删除指定的一个(多个)元素
sismember 判断key对应的Set集合中是否含有这个元素
srandmember 随机返回key对应的Set集合中的一个(多个)元素
sdiff 展示去掉第一个集合中其它集合含有的相同元素(仅仅只是展示,在数据库中并没有实际删除)
sinter 求交集
sunion 求和集

sadd 操作

sadd key member1 member2
复制代码
  • 没有Set时创建,之后向key对应的类型为Set的value添加元素,有Set时就直接插入,注意Set中不允许有重复元素,如果有重复元素,则会在插入时自动去除

在这里插入图片描述

smembers 操作

smembers key
复制代码
  • 遍历key对应的类型为Set的value,显示Set中所有元素,注意 Set中的元素是无序的

在这里插入图片描述

scard 操作

scard key
复制代码
  • 返回key对应的Set集合中元素的个数

在这里插入图片描述

spop 操作

扫描二维码关注公众号,回复: 14254638 查看本文章
spop key 
随机返回一个元素 并将元素在集合中删除

spop key count  
随机返回count个元素 并将元素在集合中删除
复制代码
  • 默认随机返回一个元素,并将元素在Set集合中删除

在这里插入图片描述

smove 操作

smove source destination member

将source对应的Set集合中的member元素移动到destination对应的Set集合中去
注:如果destination不存在,会自动创建一个key为destination,value为Set类型的键值对
复制代码
  • 将一个key对应的Set集合中的元素移动到另一个key对应的Set集合

在这里插入图片描述

srem 操作

srem key member1 member2

删除key对应的Set集合中的member1、member2元素
复制代码
  • 从key对应的Set集合中删除指定的一个(多个)元素

在这里插入图片描述

sismemeber 操作

sismember key member
复制代码
  • 判断key对应的Set集合中是否存在member这个元素

在这里插入图片描述

srandmember 操作

srandmember key 
随机返回一个元素

srandmember key count
随机返回count个元素
复制代码
  • 随机返回key对应的Set集合中的一个(多个)元素

在这里插入图片描述

sdiff 操作

sdiff key1 key2 key3 
复制代码
  • 展示去掉第一个集合中其它集合含有的相同元素(仅仅只是展示,在数据库中并没有实际删除),总结就是如果第一个集合中含有和后续集合相同的元素,就删除第一个集合中和后续集合相同的元素,然后展示,注意:实际上Redis数据库中并没有删除,仅仅只是展示

在这里插入图片描述

sinter 操作

sinter key1 key2 key3
复制代码
  • 求key1、key2、key3 ······ 分别对应的Set集合的交集

在这里插入图片描述

sunion 操作

sunion key1 key2 key3
复制代码
  • 所有key对应的Set集合求并集

在这里插入图片描述

10.4 Redis操作Zset类型

特点: 可排序的set集合 排序 不可重复

ZSET 官方 可排序SET sortSet

key是String类型,value是Zset类型

Zset中每个元素都有一个得分score,Zset日后就会根据这个得分对集合中的元素进行排序

1.内存模型

在这里插入图片描述

2.常用命令

命令 说明
zadd 没有Zset时先创建,添加一个有序集合元素
zcard 返回集合的元素个数
zrange 升序 zrevrange 降序 返回升序|降序的元素列表,Zset根据得分进行排序
zrangebyscore 按照分数查找一个范围内的元素
zrank 返回排名
zrevrank 倒序排名
zscore 显示某一个元素的分数
zrem 移除某一个元素
zincrby 给某个特定元素加分

Zadd 操作

zadd zsets score1 member1 score2 member2 
复制代码
  • 如果没有Zset集合,就先创建,之后往里面插入元素,每个元素都要有一个得分score,以后Zset就会根据这个得分score进行排序,因为Zset不允许有重复元素,所以如果有重复元素则会用后插入的相同元素的得分替换前面插入的相同元素的得分

在这里插入图片描述

zcard 操作

zcard key
复制代码
  • 返回key对应的Zset集合中元素的数量

在这里插入图片描述

zrange、zrevrange 操作

zrange key start stop [WITHSCORES]

zrange key start stop 
Zset会根据每个元素的得分进行排序,一排序每个元素就会有下标了,zrange是按照升序排列

zrange key start stop withscores
按照升序排列的同时还会展示每个元素的得分

zrevrange key start stop [WITHSCORES]

zrevrange key start stop
zrange是按照降序排列

zrevrange key start stop withscores
按照降序排列的同时还会展示每个元素的得分
复制代码
  • zrange 会根据每个元素的得分进行排序,之后按照升序展示元素列表
  • zrevrange会根据每个元素的得分进行排序,之后按照降序展示元素列表

在这里插入图片描述

在这里插入图片描述

zrangebyscore 操作

zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

zrangebyscore key min max 
根据分数查找在这个分数范围内的元素

zrangebyscore key min max withscores limit offset count
根据分数查找在这个分数范围内的元素同时展示元素的分数,并在查找之后
从符合条件的第offset个元素进行展示,展示count个元素
复制代码
  • 根据分数查找在这个分数范围内的元素,可以选择同时是否展示分数以及选择从符合条件的第几个元素开始展示,展示几个元素

在这里插入图片描述

zrank 操作

zrank key member

展示按照升序排列之后member在key对应的Zset集合中的排名(从0开始)
复制代码
  • 展示按照升序排列之后member在key对应的Zset集合中的排名(从0开始)

在这里插入图片描述

zrevrank 操作

zrevrank key member

展示member在key对应的Zset集合中降序排列之后的排名(从0开始)
复制代码
  • 展示member在key对应的Zset集合中降序排列之后的排名(从0开始)

在这里插入图片描述

zscore 操作

zscore key member
复制代码
  • 展示key对应的Zset集合中member元素的排名

在这里插入图片描述

zrem 操作

zrem key member [member ...]

zrem key member

zrem key member1 member2
复制代码
  • 删除key对应的Zset集合中指定的元素

在这里插入图片描述

zincrby key increment member

给key对应的Zset集合中的member元素加上increment分
复制代码
  • 给指定元素加指定的分,在给某个元素加分后可能会改变该元素在集合中的排名,可以利用这个做排行榜的动态排名

在这里插入图片描述

10.5 Redis操作Hash类型

特点: value 是一个map结构 存在key value , key 无序的

key是String,value又是一个key-value

1. 内存模型

在这里插入图片描述

2.常用命令

命令 说明
hset 设置一个key为String,value为key-value的键值对
hget 获得一个key对应的value
hgetall 获得所有的key/value对
hdel 删除某一个key/value对
hexists 判断一个key是否存在
hkeys 获得所有的key
hvals 获得所有的value
hmset 设置多个key/value
hmget 获得多个key的value
hsetnx 设置一个不存在的key的值
hincrby 为value进行加法运算
hincrbyfloat 为value加入浮点值

hset 操作

hset key field value

key表示redis中key是什么,redis中的value又是一个键值对,field表示redis中value的key是什么,value表示redis中value的value是什么,总结:对于Hash类型来说,redis中的value又是一个键值对
复制代码
  • 设置一个key为String,value为key-value的键值对

在这里插入图片描述

hget 操作

hget key field

获得redis中key对应的value为键值对类型的value中键为field的值
复制代码
  • 获得redis中key对应的value为键值对类型中value中键为field的值

在这里插入图片描述

hgetall 操作

hgetall key
复制代码
  • 获取key对应的value为键值对类型中value的所有key-value

在这里插入图片描述

hdel 操作

hdel key field

hdel key field1 field2
复制代码
  • 删除redis中key对应的value中(value为键值对类型)键为field的键值对

在这里插入图片描述

hexists 操作

hexists key field

判断value中是否存在键为field的键值对
复制代码
  • 判断key对应的value中是否存在键为field的键值对,存在返回1,不存在返回0(value为键值对类型)

在这里插入图片描述

hkeys 操作

hkeys key
复制代码
  • 获得key对应的value中所有的键(value为键值对类型)

在这里插入图片描述

hvalues 操作

hvals key
复制代码
  • 获得key对应value中所有的值(value为键值对类型)

在这里插入图片描述

hmset 操作

hmset key field value [field value ...]

hmset key field1 value1 field2 value2
复制代码
  • 一次设置key对应的value中的多个键值对(value为键值对类型)

在这里插入图片描述

hmget 操作

hmget key field [field ...]

hmget key field1 field2
复制代码
  • 一次获得key对应的value中的多个指定键的键值对(value为键值对类型)

在这里插入图片描述

hsetnx 操作

hsetnx key field value
复制代码
  • 设置key对应的value中不存在指定键的键值对(value为键值对类型)

在这里插入图片描述

hincrby 操作

hincrby key field increment
复制代码
  • 将key对应的value中指定键的值且其值为数值类型加上increment数值

在这里插入图片描述

hincrbyfloat 操作

hincrbyfloat key field increment
复制代码
  • 将key对应的value中指定键的值且其值为数值类型加上increment浮点数

在这里插入图片描述

11. Redis可视化工具的使用

链接:百度网盘 提取码:i89n

压缩之后进行安装,我安装的是 0.8.8.384 版本的

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

之后等待安装完成即可,安装完成之后启动,那么如何连接到redis服务呢,我们来看一下

redis服务器默认是不允许远程连接的,只允许localhost,所以我们要开启redis的远程连接,那么怎么开启远程连接呢,我们可以修改配置文件开启远程连接,使用 vim redis.conf 命令修改配置文件

在这里插入图片描述

使用vim 编辑 redis.conf 配置文件

vim redis.conf 
复制代码

在这里插入图片描述

默认是 bind 127.0.0.1 代表只允许本机访问,我们要修改为 bind 0.0.0.0 代表允许一切客户端访问

另外因为我们的redis使用的是 7000 端口,我们还要在虚拟机中输入以下命令查看是否打开端口号“7000”

firewall-cmd --query-port=7000/tcp
复制代码

如果返回的是 no,我们需要使用下面的命令打开 ”7000” 端口

firewall-cmd --add-port=7000/tcp 
复制代码

修改完之后重启redis即可,之后我们来使用可视化工具进行连接

在这里插入图片描述

连接成功之后点击OK

在这里插入图片描述

猜你喜欢

转载自juejin.im/post/7107376506560577543