持续创作,加速成长!这是我参与「掘金日新计划 · 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