Redis 管道
Redis 管道 关键词:Pipeline Pipeline 简介Redis 是一种基于 C/S 模型以及请求/响应协议的 TCP 服务。通常情况下,一个 Redis 命令的请求、响应遵循以下步骤: 客户端向服务端发送一个查询请求,并监听 Socket 返回(通常是以阻塞模式,等待服务端响应)。 服务端处理命令,并将结果返回给客户端。 显然,如果每个 Redis 命令都发起一次请求、响应,会很低效。因此,Redis 客户端提供了一种批量处理技术,即 管道技术(Pipeline)。Pipeline 的工作原理就是:将多个 Redis 命令一次性发送给服务端,服务端处理后,统一返回给客户端。由于减少了通信次数,自然提升了处理效率。 Pipeline 限制在使用 Redis 管道技术时,要注意一些限制,避免踩坑: Pipeline 不能保证原子性 - Pipeline 只是将客户端发送命令的方式改为批量发送,而服务端在接收到 Pipeline 发来的命令后,将其拆解为一条条命令,然后依然是串行执行。执行过程中,服务端有可能执行其他客户端的命令,所以无法保证...
Redis 发布订阅
Redis 发布订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。 Redis 有两种发布订阅模式 基于频道(Channel)的发布订阅 基于模式(Pattern)的发布订阅 关键词:订阅、SUBSCRIBE、PSUBSCRIBE、PUBLISH、观察者模式 观察者模式Redis 发布订阅应用了设计模式中经典的“观察者模式”。 观察者模式(Observer)是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个 “观察” 该对象的其他对象。 当一个对象状态的改变需要改变其他对象,或实际对象是事先未知的或动态变化的时,可使用观察者模式。 当应用中的一些对象必须观察其他对象时,可使用该模式。但仅能在有限时间内或特定情况下使用。 Redis 订阅模式Redis 有两种发布订阅模式: (1)基于频道(Channel)的发布订阅 服务器状态在 pubsub_channels 字典保存了所有频道的订阅关系: SUBSCRIBE 命令负责...
Redis 过期删除和内存淘汰
Redis 过期删除和内存淘汰 关键词:定时删除、惰性删除、定期删除、LRU、LFU Redis 过期删除Redis 可以为每个键设置过期时间,当键过期时,会自动删除该键。 设置键的生存时间或过期时间Redis 中,和键的生存时间相关的命令如下所示: 命令 描述 EXPIRE 设置 key 的过期时间,单位为秒 PEXPIRE 设置 key 的过期时间,单位为毫秒 EXPIREAT 设置 key 的过期时间为指定的秒级时间戳 PEXPIREAT 设置 key 的过期时间为指定的毫秒级时间戳 TTL 返回 key 的剩余生存时间,单位为秒 PTTL 返回 key 的剩余生存时间,单位为毫秒 PERSIST 移除 key 的过期时间,key 将持久保持 【示例】EXPIRE、TTL 操作 1234567891011121314> set key valueOK# 设置 key 的生存时间为 60s> expire key 60(integer) 1# 查看 key 的剩余生存时间> ttl key(integer) 58# ...
modbus 基础
1.什么是modbus?顾名思义,它是一个Bus,即总线协议。比如串口协议、IIC协议、SPI都是通信协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。 Modbus通讯物理接口可以选用串口(包括RS232、RS485和RS422),也可以选择以太网口。其通信遵循以下的过程: 主设备向从设备发送请求 从设备分析并处理主设备的请求,然后向主设备发送结果 如果出现任何差错,从设备将返回一个异常功能码 归纳:就是免费+简单+方便修改!Modbus就是一种用在工业上的简单协议! 2.modbus 包括些什么?大致细分为以下三种情况: Modbus-RTU Modbus-ASCII Modbus-TCP 一个设备只会有一个协议,只需要看对应的部分即可。 2.1.modbus 的通讯方式 以太网:对应的通信模式是Modbus TCP/IP 异步串行传输(各种介...
linux 命令集
linux 命令集 0.常用命令12345678910111213141516171819202122# 查看linux版本cat /etc/os-release# 查看服务systemctl# 查看指定服务状态systemctl status serviename# 查看全部进程ps aux# 查找指定进程ps -ef | grep Name # 结束进程kill PID # 查看进程路径pwdx PID # 查找文件find /path/to/search -name "filename"# 查看文件尾部多少行,并且试试监控新写入的每行数据tail -100f 文件名 # 给文件权限,777 意味着所有者、组用户和其他用户都有读、写和执行权限chmod 777 文件名# 递归地给文件夹及其内部所有文件赋予所有权限chmod -R 777 文件夹 1.基本命令1234567891011121314151617181920212223242526ps -ef | grep Name 查找进程kill Name 结束进程uname -m 显示机器的处...
linux 上常用操作
在工作中遇到的有关Linux的问题 ifconfig 个字段的含义此linux服务器为:kylin 接口名称 类型 用途 enp180s0f2 物理以太网接口 物理网络连接 enp25s0f0 物理以太网接口 物理网络连接 vethd989592 虚拟以太网接口对 容器/虚拟机网络通信 vethdc1bcea 虚拟以太网接口对 容器/虚拟机网络通信 virbr0 虚拟网桥 虚拟机NAT网络 设置tomcat 开机自启12345crontab -e# 在其中添加 下面这行代码(startup.sh 自行更好,只有一行时 & 不要) 保存reboot sudo -u root /home/debian/tomcat9/bin/startup.sh start &# 版本为 Kylin Linux ,用下行代码@reboot /home/windit_data/dataTransfer/apache-tomcat-8.5.100/bin/startup.sh start 调试tomcat取到tomcat bi...
Windows 工作常用操作
Windows 工作中遇到的问题 work condition标签(空格分隔): Windows windows 端口占用12345678# 查找端口号,监听的程序idnetstat -aon|findstr "9011"# 通过程序id,找到程序tasklist|findstr "24548"# 通过程序id,杀死这个程序taskkill -pid 24548 -f# 查找这个端口的线程的数量netstat -ano | findstr 9002 | find /c /v "" windows 启动 jar包案例一: 1234567891011121314@echo offsetlocalREM 改变当前工作目录到 JAR 文件所在目录, /d 参数允许同时更改驱动器和目录cd /d D:\transferData\REM 指定Java应用程序和参数set "JAVA_PATH=D:\transferData\jdk1.8.0_351\jre\bin\java"set "JAR_FI...
触发器
触发器 触发器1.触发器创建,语法如下 1234567CREATE TRIGGER trigger_name{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_nameFOR EACH ROWBEGIN -- 触发器主体 -- 你的SQL语句END; eg:创建 order 表 123456CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, product VARCHAR(255), quantity INT, order_date DATE); 创建 order_summary 表 123456CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, product VARCHAR(255), quantity INT, order_date DATE); 创建触发器 12345678910DELIMI...
redis 使用过程中的bug记录
redis 使用过程中的bug记录 redisBUG标签(空格分隔): redis Windows环境1、Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。`` 2、报错如下 12345D:\Redis-x64-5.0.14.1>redis-server.exe redis.windows.conf[7948] 29 Jan 10:06:50.399 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo[7948] 29 Jan 10:06:50.399 # Redis version=5.0.14.1, bits=64, commit=ec77f72d, modified=0, pid=7948, just started[7948] 29 Jan 10:06:50.400 # Configuration loaded[7948] 29 Jan 10:06:50.402 # Could not create server TCP li...
Spring MVC 之视图技术
Spring MVC 之视图技术Spring MVC 中视图技术的使用是可插拔的。无论决定使用 Thymeleaf、Groovy 等模板引擎、JSP 还是其他技术,都可以通过配置来更改。 Spring MVC 的视图位于该应用程序的内部信任边界内。 视图可以访问应用程序上下文的所有 bean。 因此,不建议在模板可由外部源编辑的应用程序中使用 Spring MVC 的模板支持,因为这可能会产生安全隐患。 ThymeleafThymeleaf 是一个现代服务器端 Java 模板引擎,它强调自然的 HTML 模板,可以通过双击在浏览器中预览,而无需运行服务器,这对于 UI 模板的独立工作(例如,由设计师)非常有帮助。 Thymeleaf 与 Spring MVC 的集成由 Thymeleaf 项目管理。 配置涉及一些 bean 声明,例如 ServletContextTemplateResolver、SpringTemplateEngine 和 ThymeleafViewResolver。 有关详细信息,请参阅 Thymeleaf+Spring。 FreeMarkerApache F...