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