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 操作

    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 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集合中指定的元素
  • 命令说明
    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

    在这里插入图片描述

    分类:
    后端