Redis的安装

Redis安装步骤:
1.获取源码、解压、进入源码目录。
2.编译生成可执行文件。
3.建立Redis目录(非必须)。
4.配置参数。

1、获取源码、解压、进入源码目录
使用wget工具等下载:
wget (百度不让用链接)
tar xzf redis-1.2.6.tar.gz
cd redis-1.2.6。
编译生成可执行文件
由于 makefile文件已经写好,我们只需要直接 在源码目录执行make命令进行编译即可:
make
make命令执行完成后,会在当前目录下生成本个 可执行文件,分别是 redis-serverredis-cliredis-benchmarkredis-stat,它们的作用如下:
redis-server:Redis服务器的daemon (守护进程:
是一段连续运行的程序,用于处理计算机系统希望接收到的阶段性的服务需求的
启动程序
redis-cli:Redis命令行操作工具。当然,你也可以用 telnet(远程登录) 根据其纯文本协议来操作
redis-benchmark:Redis 性能测试工具,测试Redis在你的系统及你的配置下的读写性能
redis-stat:Redis状态 检测工具,可以检测Redis当前状态参数及延迟状况。
建立Redis目录(非必须)
这个过程不是必须的,只是为了将Redis相关的 资源统一管理而进行的操作。
执行以下命令建立相关目录并拷贝相关文件至目录中:
sudo -s
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
mkdir -p /usr/local/redis/var
cp redis-server redis-cli redis-benchmark redis-stat /usr/local/redis/bin/
cp redis.conf /usr/local/redis/etc/
配置参数
在我们成功安装Redis后,我们直接执行redis-server即可运行Redis,此时它是按照 默认配置来运行的( 默认配置甚至不是后台运行)。我们希望Redis按我们的要求运行,则我们需要 修改配置文件,Redis的配置文件就是我们上面第二个cp操作的redis.conf文件,它被我们拷贝到了/usr/local/redis/etc/目录下。修改它就可以配置我们的server了。如何修改?下面是redis.conf的主要配置参数的意义:
daemonize:是否以 后台daemon方式运行
pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
save * *:保存 快照的频率,第一个*表示多长时间,第二个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存 快照。可设置多个条件。
rdbcompression:是否使用压缩
dbfilename:数据 快照文件名(只是文件名,不包括目录)
dir:数据 快照的保存目录(这个是目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
下面是一个略做修改后的配置文件内容:
daemonize yes
pidfile /usr/local/redis/var/redis.pid
port 6379
timeout 300
loglevel debug
logfile /usr/local/redis/var/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /usr/local/redis/var/
appendonly no
appendfsync always
glueoutputbuf yes
shareobjects no
shareobjectspoolsize 1024
将上面内容写为redis.conf并保存到/usr/local/redis/etc/目录下
然后在命令行执行:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

即可在后台启动redis服务,这时你通过
telnet127.0.0.16379
即可连接到你的redis服务

Redis常用内存优化手段与参数
通过我们上面的一些实现上的分析可以看出redis实际上的 内存管理成本非常高,即 占用了过多的内存,作者对这点也非常清楚,所以提供了一系列的 参数和手段控制节省内存,我们分别来讨论下。
  首先最重要的一点是 不要开启Redis的 VM选项,即 虚拟内存功能,这个本来是作为Redis存储超出物理内存数据的一种数据在内存与磁盘换入换出的一个持久化策略,但是其内存管理成本也非常的高,并且我们后续会分析此种持久化策略并 不成熟,所以要关闭VM功能,请检查你的 redis.conf文件中 vm-enabled 为 no。
  其次 最好设置下redis.conf中的maxmemory选项,该选项是 告诉Redis当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的 保护好你的Redis不会因为使用了过多的物理内存而导致swap,最终严重影响性能甚至崩溃。
  另外Redis为 不同数据类型分别提供了 一组参数来控制内存使用,我们在前面详细分析过 Redis Hash是value内部为一个HashMap,如果该Map的成员数比较少,则会采用 类似一维线性的紧凑格式来存储该Map, 即 省去了大量 指针的内存开销,这个参数控制对应在redis.conf配置文件中下面2项:
  1. hash-max-zipmap-entries 64
  2. hash-max-zipmap-value 512
  3. hash-max-zipmap-entries
含义是当value这个Map内部不超过多少个成员时会采用 线性紧凑格式存储, 默认是64,即value内部有64个以下的成员就是使用线性紧凑存储,超过该值自动转成 真正的HashMap
  hash-max-zipmap-value 含义是当 value这个Map内部的每个 成员值长度不超过多少字节就会采用 线性紧凑存储来节省空间。
  以上2个条件任意一个条件超过设置值都会转换成真正的HashMap,也就不会再节省内存了,那么这个值是不是设置的越大越好呢,答案当然是否定的,HashMap的优势就是 查找和操作的时间复杂度都是O(1)的,而放弃Hash采用一维存储则是O(n)的 时间复杂度,如果
  成员数量很少,则影响不大,否则会 严重影响性能,所以要权衡好这个值的设置,总体上还是最根本的 时间成本空间成本上的权衡。
同样类似的参数
list-max-ziplist-entries 512
  说明:list数据类型 多少节点以下会采用去指针的紧凑存储格式。
  list-max-ziplist-value 64
  说明:list数据类型节点值大小小于多少字节会采用紧凑存储格式。
  set-max-intset-entries 512
  说明:set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储。

  最后想说的是Redis内部实现没有对内存分配方面做过多的优化,在一定程度上会存在 内存碎片,不过 大多数情况下这个 不会成为Redis的性能瓶颈,不过如果在Redis内部存储的 大部分数据是数值型的话,Redis内部采用了一个 shared integer的方式来 省去分配内存的开销,即在 系统启动时先分配一个从1~n 那么多个数值对象放在一个池子中,如果存储的数据恰好是这个数值范围内的数据,则直接从池子里取出该对象,并且 通过引用计数的方式来共享,这样在系统存储了大量数值下,也能一定程度上节省内存并且 提高性能,这个参数值n的设置需要修改源代码中的一行宏定义REDIS_SHARED_INTEGERS,该值默认是10000,可以根据自己的需要进行修改, 修改后重新编译就可以了
  另外redis 的6种过期策略redis 中的默认的过期策略是volatile-lru 。设置方式
  config set maxmemory-policy volatile-lru
  maxmemory-policy 六种方式
  volatile-lru:只对设置了过期时间的key进行LRU(默认值)
  allkeys-lru : 是从所有key里 删除 不经常使用的key
  volatile-random:随机删除即将过期key
  allkeys-random:随机删除
  volatile-ttl : 删除即将过期的
  noeviction : 永不过期,返回错误
  maxmemory-samples 3 是说每次进行淘汰的时候 会随机抽取3个key 从里面淘汰最不经常使用的(默认选项)
内容概要:本文档详细介绍了基于MATLAB实现多目标差分进化(MODE)算法进行无人机三维路径规划的项目实例。项目旨在提升无人机在复杂三维环境中路径规划的精度、实时性、多目标协调处理能力、障碍物避让能力和路径平滑性。通过引入多目标差分进化算法,项目解决了传统路径规划算法在动态环境和多目标优化中的不足,实现了路径长度、飞行安全距离、能耗等多个目标的协调优化。文档涵盖了环境建模、路径编码、多目标优化策略、障碍物检测与避让、路径平滑处理等关键技术模块,并提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,对无人机路径规划和多目标优化算法感兴趣的科研人员、工程师和研究生。 使用场景及目标:①适用于无人机在军事侦察、环境监测、灾害救援、物流运输、城市管理等领域的三维路径规划;②通过多目标差分进化算法,优化路径长度、飞行安全距离、能耗等多目标,提升无人机任务执行效率和安全性;③解决动态环境变化、实时路径调整和复杂障碍物避让等问题。 其他说明:项目采用模块化设计,便于集成不同的优化目标和动态环境因素,支持后续算法升级与功能扩展。通过系统实现和仿真实验验证,项目不仅提升了理论研究的实用价值,还为无人机智能自主飞行提供了技术基础。文档提供了详细的代码示例,有助于读者深入理解和实践该项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值