Redis数据库

1 篇文章 0 订阅
1 篇文章 0 订阅

redis介绍

redis,底层由3万多行C语言代码实现,全名“Remote DIctionary Server”,名字就可以看出来,redis是一个key-value键值对的数据库存储系统。Redis中的key只能是string字符串,value可以是:string(字符串)、hash(哈希)、list(列表)、set(集合)、sorted set(有序集合),这五种当中的一种。

redis特点

  • 单进程单线程高性能服务器,保证了操作的原子性,数据的安全性
  • 可以达到10w的qps
  • 支持publish/subscribe(发布和订阅)、通知、key过期等特性,支持异机主从复制

Linux下安装和启动Redis

安装

# 下载最新redis,我这里是6.2.6版本
wget -q http://download.redis.io/releases/redis-6.2.6.tar.gz
# 解压到用户目录下
tar xf redis-2.8.9.tar -C ~/
cd ~/redis-6.2.6
# 安装到用户目录下的redis目录
make MALLOC=jemalloc
make PREFIX=~/redis install
LANG=en

安装完成之后在~/redis/bin目录下会生成5个可执行文件

redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump

redis-server          # Redis服务器的daemon启动程序
redis-cli             # Redis命令操作工具。当然,你也可以用telnet根据其纯文本协议来操作
redis-benchmark		  # Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能。
redis-check-aof  	  # 对更新日志appendonly.aof检查,是否可用,类似检查mysql binlog的工具
redis-check-dump	  # 用于本地数据库rdb文件的检查

配置环境变量,以便在任何位置都可以调用~/redis/bin下的5个功能服务,例如下一步的启动redis

vim ~/.bashrc

# 在文件末尾添加
export PATH="$PATH:$HOME/redis/bin"

启动

下载的redis-6.2.6目录下有一个默认的配置文件redis.conf,我们可以用他来启动redis,当然通常我们是根据自己项目的配置文件来启动

# 在后台启动redis
redis-server redis.conf &

# 查看redis进程是否启动
ps aux | grep redis

配置文件

Redis的配置文件比较重要,这里简单介绍一下

NETWORK
  • bind默认IP为本地回环地址(127.0.0.1),只能通过本主机访问Redis,其他远程主机无法连接,如果bind为空,则接受所有连接。
  • 默认port为6379,由于Redis是单线程模式,因此一台主机开多个Redis进程时会修改端口
  • timeout:单位为秒的客户端超时时间,规定时间内客户端没有发任何指令,Redis服务将关闭连接,默认为0表示不关闭
SNAPSHOTTING

rdb持久化

  • save 300 10 : 表示300秒内至少有10个数据发生变化则将数据保存到磁盘,如果只是使用Redis的缓存功能则直接将save注释掉
  • stop-writes-on-bgsave-error:当落盘数据时候后,Redis是否停止接收数据
  • rdbcompression:落盘的数据是否启动压缩,启动的话会消耗CPU,但落盘的快照数据会比较小
  • dbfilename:快照的文件名
  • dir:快照文件的存放位置(目录)
APPEND ONLY MODE

aof持久化

  • appendonly: 默认为no,只开启rdb。改为yes时,rdb和aof同时开启。两者都存在时,Redis启动时会优先从aof文件读取数据到内存,否则才会到rdb读取。
  • appendfsync:aof持久化配置:默认为everysec,表示每秒执行一次fsync。no表示不执行fsync,由操作系统保证数据到磁盘,速度最快。always表示每次写入都执行fsync,保证数据写入到磁盘。

两种持久化存储机制

Snapshot(rdb)和AOF,两种机制都是先将数据存储到内存

Snapshot

先将数据存储到内存,然后数据满足redis.conf配置文件中的save条件时,机会触发一次dump操作,将变化的数据一次性写到rdb文件中

AOF

先将数据存储到内存,在存储的过程中会调用fsync来讲本次写操作记录到日志文件中,调用fsync的频率为配置文件中的appendfsync条件决定。

性能

rdb性能高于aof:

  • rdb采用二进制方式存储数据,所以数据文件比较小,加载速度快
  • 是按照配置文件中save条件存储,每次都是整合了大量数据批量存储,写入的效率很好。而aof是根据appendfsync条件存储,一般都是实时存储,存储频率较高,效率偏低。

安全性

aof安全性高于rdb

  • rdb是积累大量数据批量存储,当Redis意外奔溃时,积累的数据会丢失。aof策略可以做到最少的数据丢失

AOF的Rewrite功能

  • aof是按照记录日志的方式工作的,那必然会导致记录的日志文件渐渐庞大,Redis会根据配置文件中的条件合理的触发Rewrite操作。Rewrite是将日志文件重新写到另一个新的日志文件中,但是对于同一个key的多次操作,只会保留记录其最后的值,以此来缩小日志文件的大小
Rewrite两个配置条件

两个条件同时满足时才触发

  • auto-aof-rewrite-percentage 100 (当前写入日志文件的大小占到初始日志文件大小的某个百分比时触发Rewrite,这里是100%的意思)
  • auto-aof-rewrite-min-size 64mb (本次Rewrite最小的写入数据量)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值