redis配置

关系数据库与非关系数据库

关系型数据库

在这里插入图片描述

非关系型数据库

在这里插入图片描述

区别

在这里插入图片描述

背景

在这里插入图片描述

总结

在这里插入图片描述

redis数据库

简介

在这里插入图片描述

优势

在这里插入图片描述

部署

关闭防火墙

编译安装redis

将包放在opt下

cd /opt/
yum install -y gcc gcc-c++ make

tar zvf redis-5.0.7.tar.gz 

cd /opt/redis-5.0.7/
make && make PREFIX=/usr/local/redis install

在这里插入图片描述
在这里插入图片描述

执行脚本,输入路径在这里插入图片描述
路径优化
ln -s /usr/local/redis/bin/* /usr/local/bin/	

netstat -natp | grep 6379

在这里插入图片描述

配置文件修改
vim /etc/redis/6379.conf

70行,监听的主机地址
bind 127.0.0.1 192.168.221.20				

93行默认的监听端口
port 6379									

137行,守护进程启用
daemonize yes							

159行,PID 文件
pidfile /var/run/redis_6379.pid				

167行,日志级别
loglevel notice								

172行,日志文件
logfile /var/log/redis_6379.log				

/etc/init.d/redis_6379 restart

在这里插入图片描述

命令工具

在这里插入图片描述
redis-cli工具使用
在这里插入图片描述

redis-benchmark 工具

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Redis 数据库命令
(1)set/get 
存放数据,命令格式为 set key value
获取数据,命令格式为 get key

例:
redis-cli -p 6379

set name srs
get name

在这里插入图片描述

(2)keys 取值
keys 	
set a1 1
set a2 2
set a33 3
set b1 4
set b2 5
set b33 6

keys *
keys b*
keys b?
keys b??

在这里插入图片描述
在这里插入图片描述

(3)exists 判断值是否存在

exists name
exists aaaa

在这里插入图片描述

(4)del 删除key

keys *
del a1
keys *

在这里插入图片描述

(5)type 获取值的类型
type 	命令可以获取 key 对应的 value 值类型

type a2

在这里插入图片描述

(6)rename 重命名(覆盖)
rename 命令是对已有 key 进行重命名。(覆盖)
命令格式:rename 源key 目标key


例:
keys b*
rename b31 b3
get b3

renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖)
命令格式:renamenx 源key 目标key

在这里插入图片描述

(7)dbsize 查看库中key的数量

例:
keys *
dbsize

在这里插入图片描述

(8)设置密码
使用config set requirepass password命令设置密码

例:
config set requirepass 123
auth 123
config get requirepass
quit
redis-cli -p 6379
keys *
auth 123
keys *

在这里插入图片描述

多数据库常用命令

(1)多数据库间切换
命令格式:select 序号


在这里插入图片描述

(2)多数据库间移动数据
格式:move 键值 序号


在这里插入图片描述
在这里插入图片描述

高可用

在这里插入图片描述

持久化

在这里插入图片描述

RDB 持久化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动时加载
在这里插入图片描述

AOF 持久化

原理是将 Reids 的操作日志以追加的方式写入文件,类似于MySQL的binlog。

开启AOF

修改redis配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
流程
在这里插入图片描述

命令追加(append)

在这里插入图片描述

文件写入(write)和文件同步(sync)

在这里插入图片描述
在这里插入图片描述

vim /etc/redis/6379.conf
#----------729行----------
appendfsync everysec
文件重写(rewrite)

在这里插入图片描述

vim /etc/redis/6379.conf
#771行---------------------------------------------------
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb 

#重写由父进程fork子进程进行;
#重写期间Redis执行的写命令,需要追加到新的AOF文件中,为此Redis引入了aof_rewrite_buf缓存。

在这里插入图片描述

重写流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

RDB优缺点

RDB持久化
在这里插入图片描述

AOF持久化
在这里插入图片描述

性能管理

查看Redis内存使用
在这里插入图片描述
在这里插入图片描述

redis调优————————内存碎片率

计算公式
在这里插入图片描述

出现原因

redis自身的内存分配器。
修改cache的值,且修改后的value与原来value的大小差异较大。

进程需要用内存的话,会先通过OS向device申请,然后才能够使用。一般进程在不需要使用的时候,会释放掉这部分内存并返回给device。但是redis作者可能为了更高的性能,所以在redis中实现了自己的内存分配器来管理内存,不会马上返还内存,不用每次都向OS申请了,从而实现高性能。

但是,redis的每个k-v对初始化的内存大小是最适合的,当这个value改变的并且原来内存大小不适用的时候,就需要重新分配内存了。(但是value存比原来小不知道会不会产生碎片)。重新分配之后,就会有一部分内存redis无法正常回收,一直占用着。

解决方法

限制内存交换: 如果内存碎片率低于1,Redis实例可能会把部分数据交换到硬盘上,应该增加可用物理内存或减少实Redis内存占用,设置maxmemory和回收策略可以避免强制内存交换
重启Redis服务器:如果内存碎片率超过1.5,重启Redis服务器可以让额外产生的内存碎片失效并重新作为新内存来使用,使操作系统恢复高效的内存管理。额外碎片的产生是由于Redis释放了内存块,但内存分配器并没有返回内存给操作系统
内存碎片清理:Redis 4.0-RC3 以上版本,使用jemalloc作为内存分配器(默认的) 支持内存碎片清理
支持在运行期进行自动内存碎片清理
设置自动清理 config set activedefrag yes,使用config rewrite 将redis内存中新配置刷新到配置文件
支持通过命令 memory purge 进行手动清理(与自动清理区域不同)

内回收key

配置文件中修改 maxmemory-policy 属性值:

vim /etc/redis/6379.conf
#---------598取消注释---------------------------------------------------------------------------
maxmemory-policy noenviction

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值