Redis实战《一》-初识redis

本文深入介绍了Redis的五种核心数据结构:String、List、Set、Hash和ZSet,包括各自的特性和常用命令,展示了Redis作为高性能非关系型数据库的强大功能。

1.初始Redis

Redis是一个速度非常快的非关系型数据库,他可以存储键和五种不同的值之间的映射,可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。

1.1 与其他数据库和软件对比
名称类型数据存储选项查询类型附加功能
Redis使用内存存储的非关系数据库字符串、列表、集合、散列、有序集合每种类型有自己的专属命令,不完全的事务支持发布订阅、主从复制、持久化、脚本
MySql关系数据库每个数据库有多个表,表有多个行select\update\insert\delete\函数\存储过程InnoDB类型支持ACID性质、主从复制、主主复制
MongoDB使用硬盘存储的非关系型数据库数据库->表->文档增删改查支持map-reduce操作、主从复制、分片、空间索引
1.2 Redis数据结构简介

redis可以存储键与五种不同数据结构类型之间的映射,这5中数据结构分别是String、List、Set、Hash、ZSet。有一部分命令对这5中数据结构是通用的,比如DEL、TYPE、RENAME。

结构类型结构存储的值结构的读写能力
String(字符串)可以是字符串、整数或者浮点数对整个字符串或者其中的一部分执行操作,对正数和浮点数执行自增或者自减
List(列表)链表,每个节点包含一个字符串从链表的两端推入或者弹出元素,基于偏移量修建链表、基于下表读取单个或者多个元素
Set(集合)无须的不重复的集合检查一个元素是否存在、计算交集、并集、差集、随机读取元素
Hash(散列)包含键值对的无序散列表添加、获取、移除某个键值对、获取所有键值对
ZSet(有序集合)字符串成员与浮点数分值之间的有序映射,排列顺序由分值大小决定添加、获取、删除某个元素
1.2.1 String字符串
命令行为返回值
GET获取存储在给定键中的值
SET设置值OK
DEL删除键中的值(这个命令可以用于所有类型)删除的个数(0或1)
SETEX为指定的key设置值和过期时间,如果key已经存在,覆盖OK
1.2.2 List列表

LPUSHRPUSH 分别表示用于将元素推入列表的左端和右端。
在这里插入图片描述下面展示了一些list中的基本命令:

命令行为返回值备注
LPUSH将给定值推入列表的左端数组长度
RPUSH推入右端数组长度
LRANGE根据下表获取元素元素集合lrange 0 -1,取出所有,如果第二个参数超过数组长度,也会返回所有的元素
LINDEX根据下表获取元素
LPOP从链表左端弹出(取出)元素弹出的元素取出后列表中就不存在
RPOP同上
1.2.3 Set集合

list和set都可以存储多个字符串,不同之处在于,set是无序的并且set通过散列来确定自己存储的每一个字符串都是唯一的。

命令行为返回值
SADD给定元素添加到集合0,1
SMEMBERS返回集合中所有元素
SISMEMBER检查给定元素是否存在于集合中0,1
SREM移除指定元素0,1
1.2.4 散列Hash

散列可以存储多个键值对之间的映射。
散列在很多方面就像是一个微缩版的Redis,很多字符串命令都有相应的散列版本。

命令行为返回值
HSET设置指定的键值对已存在返回0,但会执行更新操作。正常添加返回
HGT获取指定散列键的值没有返回null
HGETALL返回散列所有的键值对
HDEL删除指定的键值对0,不存在。1,正常删除
HLEN获取散列中字段的数量

1.2.5 有序集合ZSet

有序集合和散列一样,都用于存储键值对,这一点要注意,和set不一样,set集合是存储字符串的,zset中键值对的键称为成员(member),而且具有唯一性,值成为分值(score),分值必须为浮点数
有序集合是Redis里面唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排列顺序来访问元素结构的

命令行为示例
ZADD将一个带有给定分值的成员添加到有序集合里面ZADD zset-key 728 member1
ZRANGE根据元素位置获取多个元素ZRANGE zset-key 0 -1 withscores
ZRANGEBYSCORE根据分值范围获取多个元素ZRANGEBYSCORE zset-key 0 900 withscores
ZREM根据成员删除元素ZREM zset-key member1
ZSCORE根据成员获取分值ZSCORE zset-key member0
ZREMRANGEBYRANK移除两个参数(下标表)之间的元素,0表示第一个元素,负数表示倒数第几个,例如(0,-26)表示移除第一个到倒数第26个之间的元素,这样最后会剩下25个移除的元素个数

现在我们已经简单了解Redis的五种结构,下面即将展示如何通过结合散列的数据存储能力和有序集合内建的排序能力来解决一个常见问题。

2. 测试代码

https://github.com/zhaoteng8069/redis-in-action-demo.git

【事件触发致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③支撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开,重点研究其动力学建模与控制系统设计。通过Matlab代码与Simulink仿真实现,详细阐述了该类无人机的运动学与动力学模型构建过程,分析了螺旋桨倾斜机构如何提升无人机的全向机动能力与姿态控制性能,并设计相应的控制策略以实现稳定飞行与精确轨迹跟踪。文中涵盖了从系统建模、控制器设计到仿真验证的完整流程,突出了全驱动结构相较于传统四旋翼在欠驱动问题上的优势。; 适合人群:具备定控制理论基础和Matlab/Simulink使用经验的自动化、航空航天及相关专业的研究生、科研人员或无人机开发工程师。; 使用场景及目标:①学习全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真技术;③深入理解螺旋桨倾斜机构对飞行性能的影响及其控制实现;④为相关课题研究或工程开发提供可复现的技术参考与代码支持。; 阅读建议:建议读者结合提供的Matlab代码与Simulink模型,逐步跟进文档中的建模与控制设计步骤,动手实践仿真过程,以加深对全驱动无人机控制原理的理解,并可根据实际需求对模型与控制器进行修改与优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值