当前位置: 首页 > news >正文

redis基本类型和订阅

redis-cli -h <host> -p <port> -a <password>

其中,< host>是Redis服务器的主机名或IP地址,< port>是Redis服务器的端口号,< password>是Redis服务器的密码(如果有的话)。

set <key> <value> # 设置字符串

get <key> # 获取字符串

del <key>#删除字符串
Redis支持多种数据类型,包括字符串、哈希、列表、集合和有序集合。

1.字符串

set <key> <value>  # 设置字符串
get <key>          # 获取字符串
append <key> <value>  # 追加字符串
incr <key>         # 将键值加1
decr <key>         # 将键值减1

601e8f1eefdd42d7891c222e22246f63.png

2.哈希
哈希是一种键值对集合,其中每个键都对应一个值。

hset <key> <field> <value>  # 设置哈希字段   这里的 <key> 是哈希表的键名,<field> 是要设置的字段名,<value> 是字段对应的值,当你设置多值得时候key,field,value要不一样,不然的话可能被替换咯
hget <key> <field>          # 获取哈希字段
hgetall <key>               # 获取哈希所有字段和值
hkeys <key>                 # 获取哈希所有字段
hvals <key>                 # 获取哈希所有值
hdel <key> <field>          # 删除哈希字段

41e5ee256d2b4487bd2caedf20287a10.png


3.列表
列表是一种有序的字符串集合,可以在列表的两端进行插入和删除操作。以下是列表的命令行命令:

lpush <key> <value>  # 在列表左端插入元素 ,这里的 <key> 是列表的键名,<value> 是要插入的值。
rpush <key> <value>  # 在列表右端插入元素
lpop <key>           # 删除列表左端元素
rpop <key>           # 删除列表右端元素
lrange <key> <start> <stop>  # 获取列表指定范围的元素
38c4cb26fe4c4f06996aaf36feee8e14.png

使用 LRANGE <key> <start> <stop> 命令来获取列表中指定范围的元素。
LRANGE mylist 0 -1
这里的 <key> 是列表的键名,<start> 是起始索引,<stop> 是结束索引。索引从 0 开始,如果 <start> 和 <stop> 都为 -1,表示获取列表的所有元素

 

4.集合
集合是一种无序的字符串集合,可以进行交集、并集和差集等操作。

sadd <key> <value>   # 添加集合元素
srem <key> <value>   # 删除集合元素
smembers <key>       # 获取集合所有元素
sinter <key1> <key2>  # 获取集合交集
sunion <key1> <key2>  # 获取集合并集
sdiff <key1> <key2>   # 获取集合差集

SADD set1 "member1"
SADD set1 "member2"
SADD set2 "member2"
SADD set2 "member3"
SMEMBERS set1
SINTER set1 set2
SUNION set1 set2
SDIFF set1 set2

1447fe794fa447a8a255d1133c7d1772.png

 

首先使用 SADD 命令向集合 set1 中添加了两个成员 "member1""member2",向集合 set2 中添加了成员 "member2""member3"。然后分别使用 SMEMBERS set1SINTER set1 set2SUNION set1 set2SDIFF set1 set2 命令来获取集合的所有成员、集合 set1set2 的交集、并集以及差集。

 

 

5.有序集合
有序集合是一种有序的字符串集合,每个元素都有一个分数,可以进行按分数排序、范围查询等操作。以下是有序集合的命令行命令:

ADD <key> <score> <value>
向有序集合中添加一个成员,并指定其分数。
ZADD mysortedset 10 "member1"
ZADD mysortedset 20 "member2"

ZREM <key> <value>
从有序集合中移除指定成员。
ZREM mysortedset "member1"

ZRANGE <key> <start> <stop>
按索引范围获取有序集合中的成员。
ZRANGE mysortedset 0 -1
ZRANGE mysortedset 0 1  # 获取前两个成员

ZREVRANGE <key> <start> <stop>
按分数倒序获取有序集合中的成员。
ZREVRANGE mysortedset 0 -1
ZREVRANGE mysortedset 0 1  # 按分数倒序获取前两个成员

ZRANGEBYSCORE <key> <min> <max>
按分数范围获取有序集合中的成员。
ZRANGEBYSCORE mysortedset 0 20
 

111422cce0fd4233982f1d4203a7b1e1.png

三、事务处理
Redis支持事务处理,可以将多个命令打包成一个事务,然后一次性执行。以下是事务处理的命令行命令:

multi         # 开始事务
exec          # 执行事务
discard       # 取消事务
watch <key>   # 监视键
unwatch       # 取消监视
2c0700f46d714a458efe12ce9b8fd14e.png使用 MULTI 命令开始一个事务,在 MULTI 和 EXEC 之间插入要执行的命令;使用 EXEC 命令提交事务,Redis 将按照顺序执行事务中的所有命令。如果事务中有命令执行失败,那么事务的所有命令都将不会被执行;使用 DISCARD 命令取消事务,这会清除事务队列中的所有命令,并退出事务状态。
使用 WATCH 命令监视一个或多个键,在事务执行之前,如果这些键被其他客户端修改,则事务会被取消;取消监视(Unwatch)
取消对所有键的监视,不再关心键的变化。

四、发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis支持发布订阅模式,可以将多个客户端连接到同一个频道,然后将消息发布到频道中,所有订阅该频道的客户端都能收到消息。Redis的发布和订阅最大的缺点是消息不能持久化!也就是我们通过Redis发送的消息,压根在Redis当中根本没有存。

以下是发布订阅的命令行命令:

subscribe <channel>  # 订阅频道
unsubscribe <channel>  # 取消订阅频道

 

订阅端:

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> SUBSCRIBE dingdada  #订阅名字为 dingdada 的频道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "dingdada"
3) (integer) 1
#等待推送的信息
1) "message"  #消息
2) "dingdada"  #来自哪个频道的消息
3) "hello world\xef\xbc\x81"  # 消息的具体内容
1) "message"
2) "dingdada"
3) "my name is dyj\x81"
 

发送端:

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> PUBLISH dingdada "hello world!"  #发送消息到dingdada 频道
(integer) 1
127.0.0.1:6379> PUBLISH dingdada "my name is dyj"  #发送消息到dingdada 频道
(integer) 1

431ede881e4047eda94ce47c79e6b3cd.png

41c83e95d1e241d0a4ce8a3529dc55db.png

 

 

 

相关文章:

  • 数据结构之初始二叉树(2)
  • docker网络互联
  • 机器学习-20-基于交互式web应用框架streamlit的基础使用教程
  • 企业如何查看员工的上网时长和记录?如何查看公司局域网员工电脑的上网记录
  • uniapp 开发 App 对接官方更新功能
  • 【Android】基础—基本布局
  • 校验el-table中表单项
  • Flink实时开发添加水印的案例分析
  • 【Qt】之【Bug】error:C1083 无法打开包括文件
  • 第七章 单片机的串行口
  • 小程序为什么要做分包处理
  • [Unity]碰撞器的接触捕获层详解
  • springboot 重新注册 bean
  • 【C语言】全面解析冒泡排序
  • vscode通过ssh链接远程服务器上的docker
  • 【Leetcode】101. 对称二叉树
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 《Java编程思想》读书笔记-对象导论
  • django开发-定时任务的使用
  • Docker下部署自己的LNMP工作环境
  • Hibernate最全面试题
  • Idea+maven+scala构建包并在spark on yarn 运行
  • jquery ajax学习笔记
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • MobX
  • Node + FFmpeg 实现Canvas动画导出视频
  • Ruby 2.x 源代码分析:扩展 概述
  • 从输入URL到页面加载发生了什么
  • 警报:线上事故之CountDownLatch的威力
  • 来,膜拜下android roadmap,强大的执行力
  • 普通函数和构造函数的区别
  • 前言-如何学习区块链
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 实习面试笔记
  • 使用 @font-face
  • 使用权重正则化较少模型过拟合
  • 运行时添加log4j2的appender
  • Android开发者必备:推荐一款助力开发的开源APP
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # Redis 入门到精通(一)数据类型(4)
  • #QT(QCharts绘制曲线)
  • #Z0458. 树的中心2
  • (floyd+补集) poj 3275
  • (TOJ2804)Even? Odd?
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)springboot教学评价 毕业设计 641310
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)真正的中国天气api接口xml,json(求加精) ...