redis-doc-介绍与搭建

介绍

Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、
Key-Value数据库,并提供多种语言的API。

本质是客户端-服务端应用软件程序。
特点是使用简单、性能强悍、功能应用场景丰富。

官网地址
中文社区
redis文档
下载地址 http://www.redis.cn/download.html

持久化的方式

  • RDB 持久化:RDB 持久化方式能够在指定的时间间隔对你的数据进行快照存储
  • AOF(append only file)持久化:AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据

RDB

客户端直接通过命令BGSAVE或者SAVE来创建一个内存快照

  • BGSAVE 调用fork来创建一个子进程,子进程负责将快照写入磁盘,而父进程仍然继续处理命令。
  • SAVE 执行SAVE命令过程中,不再响应其他命令。

在redis.conf中调整save配置选项,当在规定的时间内, Redis发生了写操作的个数满足条件会触发发生BGSAVE命令

1
2
3
4
5
6
# 900秒之内至少一次写操作
save 900 1
# 300秒之内至少发生10次写操作
save 300 10
# 60秒之内发生至少10000次
save 60 10000
  • 优缺点
优点 缺点
对性能影响最小 同步时丢失数据
RDB文件进行数据恢复比使用AOF要快很多 如果数据集非常大且CPU不够强(比如单核CPU),Redis在fork子进程时可能会消耗相对较长的时间,影响Redis对外提供服务的能力。

AOF

  • 记录每次服务受到的写
    BGREWRITEAOF命令可以触发日志重写或自动重写,废除对同一个Key历史的无用命令,重建当前数据集所需的最短命令序列。
    意外中断,如果最后的命令只写了一部分,恢复时则会跳过它,执行后面完整的命令。

  • 开启AOF持久化
    appendonly yes

  • AOF策略调整

    1
    2
    3
    4
    5
    6
    7
    8
    #每次有数据修改发生时都会写入AOF文件,非常安全非常慢
    appendfsync always

    #每秒钟同步一次,该策略为AOF的缺省策略,够快可能会丢失1秒的数据
    appendfsync everysec

    #不主动fsync,由操作系统决定,更快,更不安全的方法
    appendfsync no
  • 优缺点

优点 缺点
最安全 文件体积大
容灾 性能消耗比RDB高
易读,可修改 数据恢复速度比RDB慢

Redis丢失数据的可能性

  • RDB方式
    快照产生的策略,天生就不保证数据安全

  • AOF持久化策略
    默认每秒同步一次磁盘,可能会有1秒的数据丢失
    每次修改都同步,数据安全可保证,但Redis高性能的特性全无

  • 主从复制丢失的可能
    异步复制,存在一定的时间窗口数据丢失
    网络、服务器问题,存在一定数据的丢失

内存分配

不同数据类型的大小限制

  • Strings类型:一个String类型的value最大可以存储512M。
  • Lists类型: list的元素个数最多为2^32-1个,也就是4294967295个。
  • Sets类型:元素个数最多为2^32-1个,也就是4294967295个。
  • Hashes类型:键值对个数最多为2^32-1个,也就是4294967295个

可以通过修改配置的maxmemorymaxmemory-policy进行控制。

数据过期处理

主动处理( redis 主动触发检测key是否过期)每秒执行10次。过程如下:

  1. 从具有相关过期的密钥集中测试20个随机密钥
  2. 删除找到的所有密钥已过期
  3. 如果超过25%的密钥已过期,请从步骤1重新开始

被动处理:

  1. 每次访问key的时候,发现超时后被动过期,清理掉

搭建

搭建命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 切换到root目录
cd /root

# 下载压缩包
wget http://download.redis.io/releases/redis-4.0.11.tar.gz

# 解压
tar -zxvf redis-4.0.11.tar.gz -C /usr/local/

# 切换到/usr/local
cd /usr/local

# 建立超链接,方便执行命令
ln -s ./redis-4.0.11/ ./redis

# 构建
cd ./redis
make
make install

# 目录移动,方便以后找
mkdir etc
mv redis.conf etc/

mkdir bin
cp ../bin/redis-* ./bin/

命令

常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 启动服务器
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

# 关闭服务器
redis-cli shutdown

# 本地连接
redis-cli

# 远程连接
redis-cli -h host -p port -a password

# 远程连接参考
redis-cli -h 127.0.0.1 -p 6379 -a "123456"

# 中文乱码处理
redis-cli --raw

# 热点数据查看
redis-cli --hotkeys

技巧

linux命令安装

1
2
3
4
apt-get update
apt install net-tools # ifconfig
apt install iputils-ping # ping
​apt install telnet # telnet