Redis相关

本文介绍了Redis的基本概念,包括其作为高级key-value存储系统的特性,支持的五种数据类型以及常用操作。内容涵盖Redis的键值存储、Hash数据结构的使用、设置键的过期时间和持久化方案,如RDB和AOF。此外,还讨论了Redis的高性能原因及内存淘汰策略,如LRU和TTL策略。
摘要由CSDN通过智能技术生成

redis是一种高级的key-value的存储系统

其中的key是字符串类型,尽可能key不要太长,会消耗内存还会降低查找效率

其中value 支持五种数据类型:  (最多可以容纳的数据长度是512M)

  1. 字符串型 string
  2. 字符串列表 lists
  3. 字符串集合 sets
  4. 有序字符串集合 sorted sets
  5. 哈希类型 hashs

1、存储字符串string

  1. set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”

     2. get key:获取key的value。如果与该key关联的value不是String类型,redis 将返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返 回null。

     3. incr key:将指定的key的value原子性的递增1.如果该key不存在,其初始值 为0,在incr之后其值为1。如果value的值不能转成整型,如helloworld,该操作将执 行失败并返回相应的错误信息。

    4. decr key:将指定的key的value原子性的递减1.如果该key不存在,其初始值 为0,在incr之后其值为-1。如果value的值不能转成整型,如helloworld,该操作将执 行失败并返回相应的错误信息。

127.0.0.1:6379> set helloworld abcd 
 OK 

127.0.0.1:6379> get helloworld 
"abcd"

5、存储hash

可以看成具有String Key和String Value的map容器。所 以该类型非常适合于存储值对象的信息。如Username、Password和Age等。

  (1)hset key field value:为指定的key设定field/value对(键值对)。

  (2)hgetall key:获取key中的所有filed-vaule

  (3) hget key field:返回指定的key中的field的值

  (4)hmset key fields:设置key中的多个filed/value

Redis里面存放的都是key-value形式的数据,但是里面的内容全部都是字符串,我们不可能把一个java对象放到Redis数据库里面,但有时又有可能要存一个java对象进去,把java对象转换成json字符串,这时候就可以存进去了,

根据内容分类id去查询内容信息,key应该用内容分类id作为key,value呢?我们之前是根据内容分类id查询到一个内容列表,很显然这个内容列表就是一个java对象,我们可以把它转成json,然后把它存到Redis里面去就可以了。这个缓存不可能只是为内容作缓存,有可能还会对商品、用户、…作缓存,这个时候key就会很多,用内容分类id作为key的话,有可能会重复,我们要防止key冲突,我们得对这个key进行归类,可以使用hash来对其进行归类。 

设置key的过期时间:     expire key second       以毫秒计。key过期后将不再可用设置成功返回1。当key不存在或者不能为key                                                                               设置过期时间时返回0。

命令查看key的有效期:    ttl    key                  设置key的过期时间成功后 ,如若返回正数,则说明正在倒计时;返回-1,则说明                                                                           这个key是持久化的;返回-2,则说明这个key是不存在的。 
清除key的过期时间:     persist    key            使其持久化,如若返回0,则说明持久化没成功;返回1,则说明持久化成功。

Redis持久化方案

即将数据从内存中保存到磁盘上。Redis的持久化存储提供两种方式:快照(RDB文件)和追加式文件(AOF文件)

快照(RDB文件):是Redis默认支持的持久化方案,会在一个特定的间隔保存那个时间点的一个数据快照

追加式文件(AOF文件):会记录每一个服务器收到的写操作。把所有对Redis数据库操作的命令,即增删改操作的命令,保存到一个文件中。

Redis为什么这么快

1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);

2、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

3、使用多路I/O复用模型,非阻塞IO;多路I/O复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。

Redis的几种淘汰策略

redis 是基于内存来进行高性能,高并发的读写操作的,既然是内存,那就与空间限制,如果一直往里面添加数据,那肯定不行,所以需要采用一些过期策略把不需要的数据删除或者淘汰掉。内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略(回收策略)

  • volatile-lru:从已设置过期时间的数据集中  挑选最近最少使用的数据淘汰
  • volatile-ttl:从已设置过期时间的数据集中  挑选将要过期的数据淘汰
  • volatile-random:从已设置过期时间的数据集中  任意选择数据淘汰
  • allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
  • allkeys-random:从数据集中任意选择数据淘汰

定期删除(第三点):就是redis默认是每隔100ms就随机抽取一些设置过期时间的key值,检查是否过期,如果过期就删除。

随机抽取式因为如果redis中设置过期时间的key值很多的话,每次都检查所有key,CPU基本都消耗在检查所有过期key了,对外的性能也将大大降低。

同时,随机抽查也存在一些问题。会导致一些已过期的key没有被扫描到,继续留在内存中占有空间。

可以采用懒性删除,,就是在获取某个key的时候,redis会检查一下,如果这个key设置过期时间并且已过期,则直接删除返回空。

 

 

使用优化算法,以优化VMD算法的惩罚因子惩罚因子 (α) 和分解层数 (K)。 1、将量子粒子群优化(QPSO)算法与变分模态分解(VMD)算法结合 VMD算法背景: VMD算法是一种自适应信号分解算法,主要用于分解信号为不同频率带宽的模态。 VMD的关键参数包括: 惩罚因子 α:控制带宽的限制。 分解层数 K:决定分解出的模态数。 QPSO算法背景: 量子粒子群优化(QPSO)是一种基于粒子群优化(PSO)的一种改进算法,通过量子行为模型增强全局搜索能力。 QPSO通过粒子的量子行为使其在搜索空间中不受位置限制,从而提高算法的收敛速度与全局优化能力。 任务: 使用QPSO优化VMD中的惩罚因子 α 和分解层数 K,以获得信号分解的最佳效果。 计划: 定义适应度函数:适应度函数根据VMD分解的效果来定义,通常使用重构信号的误差(例如均方误差、交叉熵等)来衡量分解的质量。 初始化QPSO粒子:定义粒子的位置和速度,表示 α 和 K 两个参数。初始化时需要在一个合理的范围内为每个粒子分配初始位置。 执行VMD分解:对每一组 α 和 K 参数,运行VMD算法分解信号。 更新QPSO粒子:使用QPSO算法更新粒子的状态,根据适应度函数调整粒子的搜索方向和位置。 迭代求解:重复QPSO的粒子更新步骤,直到满足终止条件(如适应度函数达到设定阈值,或最大迭代次数)。 输出优化结果:最终,QPSO算法会返回一个优化的 α 和 K,从而使VMD分解效果最佳。 2、将极光粒子(PLO)算法与变分模态分解(VMD)算法结合 PLO的优点与适用性 强大的全局搜索能力:PLO通过模拟极光粒子的运动,能够更高效地探索复杂的多峰优化问题,避免陷入局部最优。 鲁棒性强:PLO在面对高维、多模态问题时有较好的适应性,因此适合海上风电时间序列这种非线性、多噪声的数据。 应用场景:PLO适合用于优化VMD参数(α 和 K),并将其用于风电时间序列的预测任务。 进一步优化的建议 a. 实现更细致的PLO更新策略,优化极光粒子的运动模型。 b. 将PLO优化后的VMD应用于真实的海上风电数据,结合LSTM或XGBoost等模型进行风电功率预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值