NoSQL之Redis——Redis部署与配置
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,关系型数据库与非关系型数据库关系型数据库:一个机构化的数据库,创建在关系模型基础上,一般面向于记录包括oracle,mysql,sqlserver,db2非关系型数据库:除了主流的关系型数据库意外的数
千家信息网最后更新 2025年02月02日NoSQL之Redis——Redis部署与配置
关系型数据库与非关系型数据库
关系型数据库:一个机构化的数据库,创建在关系模型基础上,一般面向于记录包括oracle,mysql,sqlserver,db2非关系型数据库:除了主流的关系型数据库意外的数据库,都人为是非关系型的包括redis,mongdb,hbase,couhdb
非关系型数据库产生背景
对数据库高并发读写需求对海量数据高效存储与访问需求对数据库高可扩展性与高可用需求
Redis简介
Redis基于内存运行并支持持久化
采用key-value(键值对)的存储形式
优点:
具有极高的数据读写速度支持丰富的数据类型支持数据的持久化原子性支持数据备份
1,安装必要的环境组件,并安装redis
[root@localhost ~]# yum install gcc gcc-c++ make -y ##安装环境组件[root@localhost ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/ ##挂载Password for root@//192.168.100.3/LNMP-C7: [root@localhost ~]# cd /mnt/[root@localhost mnt]# tar zxvf redis-5.0.7.tar.gz -C /opt/ ##解压[root@localhost mnt]# cd /opt/redis-5.0.7/[root@localhost redis-5.0.7]# make ##编译[root@localhost redis-5.0.7]# make PREFIX=/usr/local/redis/ install ##安装
2,执行配置Redis配置文件脚本,并进行配置
[root@localhost redis-5.0.7]# cd utils/[root@localhost utils]# ./install_server.sh ##执行脚本进行配置Welcome to the redis service installerThis script will help you easily set up a running redis serverPlease select the redis port for this instance: [6379] ##默认端口Selecting default: 6379Please select the redis config file name [/etc/redis/6379.conf] ##配置文件Selected default - /etc/redis/6379.confPlease select the redis log file name [/var/log/redis_6379.log] ##日志文件Selected default - /var/log/redis_6379.logPlease select the data directory for this instance [/var/lib/redis/6379] ##数据文件Selected default - /var/lib/redis/6379Please select the redis executable path [] /usr/local/redis/bin/redis-server##可执行文件路径[root@localhost utils]# ln -s /usr/local/redis/bin/* /usr/local/bin/ ##便于系统识别[root@localhost utils]# netstat -ntap | grep 6379tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 44510/redis-server [root@localhost utils]# /etc/init.d/redis_6379 stop ##关闭redisStopping ...Redis stopped[root@localhost utils]# /etc/init.d/redis_6379 start ##开启redisStarting Redis server...[root@localhost utils]# vim /etc/redis/6379.conf ##修改配置文件bind 127.0.0.1 192.168.13.128 ##设置监听地址[root@localhost utils]# /etc/init.d/redis_6379 restart ##重启redis服务Stopping ...Redis stoppedStarting Redis server...[root@localhost utils]# redis-cli -h 192.168.13.128 -p 6379 ##登录redis192.168.13.128:6379> help set ##help帮助 SET key value [expiration EX seconds|PX milliseconds] [NX|XX] summary: Set the string value of a key since: 1.0.0 group: string192.168.13.128:6379> set teacher zhangsan ##设置键值对OK192.168.13.128:6379> set tea redOK192.168.13.128:6379> KEYS * ##查看所有的键1) "teacher"2) "tea"192.168.13.128:6379> keys t?? ##查看键是t开头后面是两个字符的1) "tea"192.168.13.128:6379> get tea ##查看键的值"red"192.168.13.128:6379> EXISTS tea ##查看键是否存在(integer) 1 ##1是存在,0是不存在192.168.13.128:6379> EXISTS teas(integer) 0192.168.13.128:6379> del teacher ##删除键(integer) 1192.168.13.128:6379> KEYS *1) "tea"192.168.13.128:6379> type tea ##查看键的类型string192.168.13.128:6379> rename tea t1 ##给键重命名OK192.168.13.128:6379> keys *1) "t1"192.168.13.128:6379> get t1"red"192.168.13.128:6379> exit ##退出
3,进行压测
[root@localhost utils]# redis-benchmark -h 192.168.13.128 -p 6379 -c 100 -n 100000##并发100,100000个请求====== SET ====== 100000 requests completed in 1.14 seconds ##请求花费的时间 100 parallel clients 3 bytes payload keep alive: 184.66% <= 1 milliseconds98.48% <= 2 milliseconds99.69% <= 3 milliseconds99.90% <= 18 milliseconds100.00% <= 18 milliseconds87642.41 requests per second====== GET ====== 100000 requests completed in 1.13 seconds 100 parallel clients 3 bytes payload keep alive: 1 [root@localhost utils]# redis-benchmark -h 192.168.13.128 -p 6379 -q -d 100 ##以字节形式指定set/get值的数据大小 SET: 90497.73 requests per second GET: 90991.81 requests per second
4,移动键值对到其他的库中(一共16个库)
[root@localhost utils]# redis-cli -h 192.168.13.128 -p 6379 ##进入Redis 192.168.13.128:6379> select 10 ##进入第11个库OK192.168.13.128:6379[10]> keys *(empty list or set)192.168.13.128:6379[10]> select 0 ##进入第1个库OK192.168.13.128:6379> move t1 10 ##移动键值对到第11个库(integer) 1192.168.13.128:6379> select 10 ##进入第11个库OK192.168.13.128:6379[10]> keys * ## 查看键1) "t1"192.168.13.128:6379[10]> get t1"red"192.168.13.128:6379[10]> flushdb ##清除库中数据OK192.168.13.128:6379[10]> keys * ##查看所有键(empty list or set)192.168.13.128:6379[10]> select 0 ##切换到第一个库OK192.168.13.128:6379> keys * ##查看所有的键1) "myset:__rand_int__"2) "mylist"3) "key:__rand_int__"4) "counter:__rand_int__"192.168.13.128:6379>
Redis持久化
Redis是运行在内存中,内存中的数据断电丢失为了能后重用Redis数据,或者防止系统故障,我们需要将Redis中的数据写入到磁盘空间中,即持久化
持久化分类
RDB方式:创建快照的方式获取某一时刻Redis中所有数据的副本AOF方式:将执行的写命令写到文件的末尾,以日志的方式来记录数据的变化
RDB持久化
Redis的默认持久化方式
默认文件名dump.rdb
触发条件:
在指定的时间间隔内,执行指定次数的写操作(配置文件控制)执行save或者是bgsave(异步)命令执行flushall命令,清空数据库所有数据执行shutdown命令,保证服务器正常关闭且不丢失任何数据
优缺点:
适合大规模的数据恢复如果业务对数据完整性和一致性要求不高,RDB是很好的选择数据的完整性和一致性不高备份时占用内存
通过RDB文件恢复数据
将dump.rdb文件拷贝到redis的安装目录的bin目录下,重启redis服务即可
配置RDB持久化
[root@localhost utils]# vim /etc/redis/6379.conf #900秒之内至少一次写操作save 900 1#300秒之内至少发生10次写操作save 300 10#60秒之内发生至少10000次写操作save 60 10000#只要满足其一都会触发快照操作,注释所有的save项表示关闭RDB#RDB文件名称dbfilename dump.rdb#RDB文件路径dir /var/lib/redis/6379#开启压缩功能rdbcompression yes
AOF持久化
Redis默认不开启弥补RDB的不足(数据的不一致性)采用日志的形式来记录每个写操作,并追加到文件中Redis重启会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
根据AOF文件恢复数据
将appendonly.aof文件拷贝到redis安装目录的bin目录下,重启redis服务即可
AOF持久化配置
[root@localhost utils]# vim /etc/redis/6379.conf #开启AOF持久化appendonly yes#AOF文件名称appendfilename "appendonly.aof"#always:同步持久化,每次发生数据变化会立刻写入磁盘# appendfsync always#everysec:默认推荐,每秒异步记录次(默认值)appendfsync everysec#no:不同步,交给操作系统决定如何同步# appendfsync no#忽略最后一条可能存在问题的指令aof-load-truncated yes
AOF的重写机制
AOF的工作原理是将写操作追加到文件中,文件的冗余内容会越来越多当AOF文件的大小超过所设定的阀值时,Redis就会对AOF文件的内容压缩
AOF重写的原理
Redis会fork出一条新进程,读取内存中的数据(并没有读取旧文件),并重新写到一个临时文件中,最后替换旧的aof文件
AOF重写配置
[root@localhost utils]# vim /etc/redis/6379.conf #在日志进行BGREWRITEAOF时, 如果设置为yes表示新写操作不进行同步fsync,#只暂存在缓冲区里,避免造成磁盘I0操作冲突,等重写完成后在写入。redis中默认为nono-appendfsync-on-rewrite no#当前AOF文件大小是上次日志重写时AOF文件大小两倍时,发生BGREWRITEAOF操作auto-aof-rewrite-percentage 100#当前AOF文件执行BGREWRITEAOF命令的最小值,#避免刚开始启动Reids时由于文件尺寸较小导致频繁的BGREWRITEAOFauto-aof-rewrite-min-size 64mb
Redis性能管理
##查看redis内存使用[root@localhost utils]# /usr/local/redis/bin/redis-cli127.0.0.1:6379> info memory
内存碎片率
●操系统分配的内存值used_ _memory_ _rss除以redis使用的内存值used_ _memory计算得出●内存碎片是由操作系统低效的分配/回收物理内存导致的不连续的物理内存分配●跟踪内存碎片率对理解redis实例的资源性能是非常重要的内存碎片率稍大于1是合理的,这个值表示内存碎片率比较低内存碎片率超过1.5,说明redis消耗了实际需要物理内存的150%,其中50%是内存碎片率内存碎片率低于1的,说明Redis内存分配超出了物理内存,操作系统正在进行内存交换
内存使用率
●redis实例的内存使用率超过可用最大内存,操作系统将开始进行内存与swap空间交换●避免内存交换针对缓存数据大小选择尽可能的使用Hash数据结构设置key的过期时间
回收key
●保证合理分配redis有限的内存资源●当内存使用达到设置的最大阀值时,需要选择一种key的回收策略默认情况下回收策略是禁止删除redis.conf配置文件中修改maxmemory-policy属性值- volatile-lru:使用LRU算法从已设置过期时间的数据集合中淘汰数据- volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰(建议使用)- volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰- allkeys-lru:使用LRU算法从所有数据集合中淘汰数据- allkeys-random:从数据集合中任意选择数据淘汰- no-enviction:禁止淘汰数据
谢谢阅读
数据
文件
内存
配置
数据库
碎片
系统
日志
时间
命令
大小
方式
分配
操作系统
物理
目录
同步
支持
服务
选择
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
方舟龙珠服务器里面有电脑人吗
中学生网络安全短剧
无线传感器网络技术英语论文
数据库中的数据都包括什么
数据库模式浅显理解
自动软件开发平台
欧盟gdpr服务器更新中
南昌融科软件开发有限公司
高港区工业网络技术
梵蒂冈服务器
网络技术安全新技术实验报告
中专计算机专业网络技术有用吗
战地5自己开服务器怎么踢人
支付宝网络安全观后感
关乎网络技术(上海)有限公司
轻量应用服务器配置选择
ppt网络安全素材
索引数据库包括
商务软件开发与应用是干什么的
软件开发学校在哪里
易语言导入数据库的工具包
软件开发资源管理
甲方软件开发合同
翻墙服务器有哪些
桌面软件开发逻辑
腾讯投资软件开发公司
电脑怎么控制服务器上的速度
中国矿业大学图书馆数据库
网络安全手抄知识
更多网络适配器打不开服务器失败