阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Redis安装部署

195次阅读
没有评论

共计 25137 个字符,预计需要花费 63 分钟才能阅读完成。

1      概要

Redis 服务器环境的安装。指导系统部署和维护使用,

以 64 位 Linux 环境下安装使用

Redis 的详细介绍:请点这里
Redis 的下载地址:请点这里

推荐阅读:

Redis 集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10 下安装 Redis(图文详解)+ Jedis 连接 Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis 系列 - 安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3 安装 Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis 配置文件 redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htm

2      缩略语和术语

缩略语 / 术语

全称

说明

append only file(aof)

全持久化模式

 

<REDIS_FILE>

Redis解压目录

 

<REDIS_HOME>

Redis安装目录

 

3      要求

编译 Redis 的要求如下:

磁盘空间

必须保证有 50G 以上的临时磁盘自由空间。Redis 安装完毕后会占据 10MB 左右的空间,实际磁盘需求会因编译设置和是否安装第三方模块而有所不同。

4      升级注意事项

如果 Redis 已经安装过,请先备份原 Redis 的所有配置文件,即 <REDIS_HOME> 目录下的所有文件

5      操作步骤说明

5.1  安装前环境说明

N/A

5.2  下载

Redis 可以到官方网站:http://www.redis.io/download 下载

本文档用 http://redis.googlecode.com/files/redis-2.4.14.tar.gz 稳定版。

Win 版下载地址:https://github.com/dmajkic/redis/downloads

5.3  Redis 介绍

Redis 是 Remote Dictionary Server 的缩写。他本质上一个 Key/Value 数据库,与 Memcached 类似的 NoSQL 型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题,他的值可以是 string(字符串)、list(列表)、sets(集合)或者是 ordered sets(被排序的集合),所有的数据类型都具有 push/pop、add/remove、执行服务端的并集、交集、两个 sets 集中的差别等等操作,这些操作都是具有原子性的,Redis 还支持各种不同的排序能力。

 

目录结构:

 

根目录下:

      redis.conf 默认配置文件

Src 目录:

make 命令执行完成后,会在 src 目录下生成 5 个可执行文件,分别是 redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump,各命令详情请参考 5.7redis 命令详解

 

5.4  解压

解压 Redis 的 tar 包很简单:

 tar -zxvf redis-2.8.5.tar.gz

这样就在当前目录下新建了一个包含发行版源代码的目录,必须 cd 进入这个目录以继续服务器的编译。

5.5  编译及安装

进入 redis 解压目录,执行如下命令编译 Redis:

cd <REDIS_FILE>

make 

 

5.6  配置

接着,复制 redis.conf 到 <REDIS_HOME>/conf/ 下,修改配置文件,来配置 Redis 服务器。

 vi <REDIS_HOME>/conf/redis.conf

我们一般只需要作简单的配置,参考 7 Redis 说明

查看配置文件:grep -v ‘^#\|^$’ redis.conf

需设置内核针对内存分配的策略:6.6 调整 overcommit_memory 参数

5.7  设置环境变量

进入当前用户主目录:

vi .bash_profile

PATH=$PATH:.:$<REDIS_HOME>/bin:$PATH

保存后执行如下命令

 . .bash_profile

退出终端后,重新登录后查看环境变量是否生效

5.8  启动、停止重新加载 Redis 配置

进入 <REDIS_HOME> 的 bin 目录下。

5.8.1      启动 Redis 服务器

命令:

      cd <REDIS_HOME>/bin

redis-server conf/redis.conf

注:此命令仅有一个启动参数,指定 <REDIS_FILE> 目录下的配置文件,不加参数执行默认配置。

测试启动 redis-cli ping 返回 PONG,启动成功。

查看端口是否被占用:netstat –ntlp |grep 6379 

5.8.2      停止 Redis

关闭服务

redis-cli shutdown

如果非默认端口,可指定端口:

redis-cli -p 6380 shutdown

5.8.3      连接 Redis

两种连接方式:

1:window DOS 方式:tentel 主机 IP 端口号(默认为 127.0.0.1:6379)

2:linux 客户端方式:redis-cli 主机 IP 端口号(默认为 127.0.0.1 6379)

5.9  redis 常用命令详解

5.9.1      redis-benchmark

Redis 性能测试工具,测试 Redis 在你的系统及你的配置下的读写性能。

redis 的基准信息和性能检测。

redis-benchmark -h localhost -p 6379 -c 100 -n 100000

100 个并发连接,100000 个请求,检测 host 为 localhost 端口为 6379 的 redis 服务器性能

./redis-benchmark -n 100000 –c 50
    ====== –c 50 ======
    100000 requests completed in 1.93 seconds (100000 个请求完成于 1.93 秒)
    50 parallel clients (每个请求有 50 个并发客户端)
    3 bytes payload (每次写入 3 字节)
    keep alive: 1 (保持 1 个连接)
    58.50% <= 0 milliseconds
    99.17% <= 1 milliseconds
    99.58% <= 2 milliseconds
    99.85% <= 3 milliseconds
    99.90% <= 6 milliseconds
    100.00% <= 9 milliseconds

(所有请求在 62 毫秒内完成)
    114293.71 requests per second(每秒 114293.71 次查询)

redis-benchmark参数

-h

设置检测主机 IP 地址,默认为127.0.0.1

-p

设置检测主机的端口号,默认为6379

-s<socket>

服务器套接字 ( 压倒主机和端口)

-c

并发连接数

-n

请求数

-d

测试使用的数据集的大小 / 字节的值 ( 默认 3 字节)

-k

1:表示保持连接 ( 默认值)0:重新连接

-r

SET/GET/INCR方法使用随机数插入数值,设置 10 则插入值为rand:000000000000 – rand:000000000009

-P

默认为 1( 无管道 ),当网络延迟过长时,使用管道方式通信( 请求和响应打包发送接收)

-q

简约信息模式,只显示查询和秒值等基本信息。

–csv

CSV 格式输出信息

-l

无线循环插入测试数据,ctrl+c停止

-t<tests>

只运行 <tests> 测试逗号分隔的列表命令,如:-t ping,set,get

-I

空闲模式。立即打开 50 个空闲连接和等待<span “=”” style=”word-wrap: break-word;”>

例子:

$ redis-benchmark基本测试

$ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20

$ redis-benchmark -t set -n 1000000 -r 100000000

$ redis-benchmark -t ping,set,get -n 100000 –csv

$ redis-benchmark -r 10000 -n 10000 lpush mylist ele:rand:000000000000

5.9.2      redis-server

Redis 服务器的 daemon 启动程序

redis-server        启动并加装默认配置文件[/path/to/redis.conf]

redis-server        /biran/conf/redis.conf 启动并加装指定配置文件

redis-server – (read config from stdin)  使用标准输入读取配置为启动参数

redis-server –test-memory 256 检测 256MB 内存

redis-server –version 查版本号

5.9.3      redis-cli

Redis 命令行操作工具。当然,你也可以用 telnet 根据其纯文本协议来操作

可输入 redis-cli 直接进入命令行操作界面。

redis-cli参数

-h

设置检测主机 IP 地址,默认为127.0.0.1

-p

设置检测主机的端口号,默认为6379

-s<socket>

服务器套接字 ( 压倒主机和端口)

-a

连接到 Master 服务器时使用的密码

-r

执行指定的 N 次命令

-i

执行命令后等待 N 秒,如 –i 0.1 info( 执行后等 0.1)

-n

指定连接 NID数据库,如 –n 3( 连接 3 号数据库)

-x

从控制台输入的信息中读取最后一个参数

-d

定义多个定界符为默认输出格式(默认: \n

–raw

使用原数据格式返回输出内容

–latency

进入一个不断延时采样的特殊模式

–slave

模拟一个从服务器到主服务器的命令显示反馈

–pipe

使用管道协议模式

–bigkeys

监听显示数据量大的 key 值,–bigkeys -i 0.1

–help

显示命令行帮助信息

–version

显示版本号

例子:

$ redis-cli进入命令行模式

$ redis-cli -r 3 info 重复执行 info 命令三次

$ cat testStr.txt | redis-cli -x set testStr读取 testStr.txt 文件所有内容设置为 testStr 的值

$ redis-cli -r 100 lpush mylist x

$ redis-cli -r 100 -i 1 info | grep used_memory_human

 

 

 

5.9.4      Redis-check-aof

更新日志检查,加 –fix 参数为修复 log 文件

redis-check-aof appendonly.aof

 

5.9.5      redis-check-dump

检查本地数据库文件

redis-check-dump  dump.rdb

 

5.9.6      查看、删除 key 信息

redis-cli keys \*  #查看所有键值信息

redis-cli -n 1 keys “test*” | xargs redis-cli -n 1 del 删除 DBID 为 1 的 test 开头的 key 值

5.9.7      获取服务器的信息和统计

redis-cli info 查询系统信息。默认为 localhost,端口为 6379。

redis-cli -p 6379 info |  grep ‘\<used_memory\>’ 过滤查询 used_memory 属性

当 used_memory_rss 接近 maxmemory 或者 used_memory_peak 超过 maxmemory 时,要加大 maxmemory 负责性能下降

redis 服务的统计信息:

redis_version:2.4.14

Redis版本号

redis_git_sha1:00000000

 

redis_git_dirty:0

Git版本??

arch_bits:64

64位系统

multiplexing_api:epoll

 

gcc_version:4.1.2

gcc版本号

process_id:5551

当前服务器进程id

uptime_in_seconds:1538

正常工作时间(秒)

uptime_in_days:0

正常工作天数

lru_clock:1975799

 

used_cpu_sys:0.04

Cpu使用率

used_cpu_user:0.09

 

used_cpu_sys_children:0.01

 

used_cpu_user_children:0.04

 

connected_clients:2

客户端连接数

connected_slaves:0

从服务器连接数

client_longest_output_list:0

 

client_biggest_input_buf:0

 

blocked_clients:0

锁定的客户端

used_memory:3765272

redis数据占用的内存,单位 bytes( 字节)

used_memory_human:3.59M

重点关注!

used_memory_rss:4665344

redis占用的物理内存

used_memory_peak:3756712

redis使用物理内存的峰值

used_memory_peak_human:3.58M

 

mem_fragmentation_ratio:1.24

内存碎片率

mem_allocator:jemalloc-2.2.5

内存分配器版本

loading:0

 

aof_enabled:0

是否开启纯累加模式

changes_since_last_save:0

 

bgsave_in_progress:0

后台异步保存数据的进程数

last_save_time:1340962658

 

bgrewriteaof_in_progress:0

异步重写 AOF 文件以反应当前数据库的状态的进程数

total_connections_received:3

接受到的总连接数

total_commands_processed:10156

服务器处理的命令数量

expired_keys:0

失效 key 的总数量

evicted_keys:0

已删除的 key 的总数量

keyspace_hits:0

Key命中次数

keyspace_misses:0

Key未命中次数

pubsub_channels:0

订阅信息

pubsub_patterns:0

 

latest_fork_usec:579

最近子进程

vm_enabled:0

是否使用虚拟内存 0: 不使用,1:使用

role:slave

master为主服务器 slave 为从服务器

master_host:127.0.0.1

连接主服务器IP

master_port:6379

连接主服务器端口号

master_link_status:up

 

master_last_io_seconds_ago:2

距离最后一次的连接时间

master_sync_in_progress:0

同步主服务器进程数

db0:keys=3,expires=0

1号数据库保存的 key 数量,及超时时间

db1:keys=1,expires=0

2号数据库保存的 key 数量,及超时时间

 

5.9.8      Redis 的 query 分析

redis-faina(https://github.com/Instagram/redis-faina) 是由 Instagram 开发并开源的一个 Redis 查询分析小工具,需安装 Python 环境。

redis-faina 是通过 Redis 的 MONITOR 命令来实现的,通过对在 Redis 上执行的 query 进行监控,统计出一段时间的 query 特性,需 root 权限。

通过管道从 stdin 读取 N 条命令,直接分析

redis-cli -p 6439 monitor  | head -n <NUMBER OF LINES TO ANALYZE> | ./redis-faina.py

 

从一个文件中读取 117773 条命令,再分析

redis-cli -p 6439 monitor  | head -n 117773 > /tmp/outfile.txt

./redis-faina.py /tmp/outfile.txt

其输出结果如下:

Overall Stats

========================================

Lines Processed    117773

Commands/Sec        11483.44

 

Top Prefixes(按 key 前缀统计)

========================================

friendlist          69945

followedbycounter  25419

followingcounter    10139

recentcomments      3276

queued              7

 

Top Keys(操作最频繁的 key)

========================================

friendlist:zzz:1:2    534

followingcount:zzz    227

friendlist:zxz:1:2    167

friendlist:xzz:1:2    165

friendlist:yzz:1:2    160

friendlist:gzz:1:2    160

friendlist:zdz:1:2    160

friendlist:zpz:1:2    156

 

Top Commands(执行最多的命令)

========================================

SISMEMBER  59545

HGET        27681

HINCRBY    9413

SMEMBERS    9254

MULTI      3520

EXEC        3520

LPUSH      1620

EXPIRE      1598

 

Command Time (microsecs)(命令执行时长)

========================================

Median      78.25

75%        105.0

90%        187.25

99%        411.0

 

Heaviest Commands (microsecs)(耗时最多的命令)

========================================

SISMEMBER  5331651.0

HGET        2618868.0

HINCRBY    961192.5

SMEMBERS    856817.5

MULTI      311339.5

SADD        54900.75

SREM        40771.25

EXEC        28678.5

 

Slowest Calls(最慢的命令)

========================================

3490.75    “SMEMBERS” “friendlist:zzz:1:2”

2362.0      “SMEMBERS” “friendlist:xzz:1:3”

2061.0      “SMEMBERS” “friendlist:zpz:1:2”

1961.0      “SMEMBERS” “friendlist:yzz:1:2”

1947.5      “SMEMBERS” “friendlist:zpz:1:2”

1459.0      “SISMEMBER” “friendlist:hzz:1:2” “zzz”

1416.25    “SMEMBERS” “friendlist:zhz:1:2”

1389.75    “SISMEMBER” “friendlist:zzx:1:2” “zzz”

从上面结果我们可以看到对 Redis 的操作规律,比如针对哪些 key 在进行操作,进行了什么操作,这些操作的效率如何等相关有用信息。

由于 Redis 的 MONITOR 也对性能有所影响,所以建议在使用时不要一直开启 MONITOR 来分析。可以采用定时抽样一段时间来做样本分析。

1      概要

Redis 服务器环境的安装。指导系统部署和维护使用,

以 64 位 Linux 环境下安装使用

Redis 的详细介绍:请点这里
Redis 的下载地址:请点这里

推荐阅读:

Redis 集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10 下安装 Redis(图文详解)+ Jedis 连接 Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis 系列 - 安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3 安装 Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis 配置文件 redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htm

2      缩略语和术语

缩略语 / 术语

全称

说明

append only file(aof)

全持久化模式

 

<REDIS_FILE>

Redis解压目录

 

<REDIS_HOME>

Redis安装目录

 

3      要求

编译 Redis 的要求如下:

磁盘空间

必须保证有 50G 以上的临时磁盘自由空间。Redis 安装完毕后会占据 10MB 左右的空间,实际磁盘需求会因编译设置和是否安装第三方模块而有所不同。

4      升级注意事项

如果 Redis 已经安装过,请先备份原 Redis 的所有配置文件,即 <REDIS_HOME> 目录下的所有文件

5      操作步骤说明

5.1  安装前环境说明

N/A

5.2  下载

Redis 可以到官方网站:http://www.redis.io/download 下载

本文档用 http://redis.googlecode.com/files/redis-2.4.14.tar.gz 稳定版。

Win 版下载地址:https://github.com/dmajkic/redis/downloads

5.3  Redis 介绍

Redis 是 Remote Dictionary Server 的缩写。他本质上一个 Key/Value 数据库,与 Memcached 类似的 NoSQL 型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题,他的值可以是 string(字符串)、list(列表)、sets(集合)或者是 ordered sets(被排序的集合),所有的数据类型都具有 push/pop、add/remove、执行服务端的并集、交集、两个 sets 集中的差别等等操作,这些操作都是具有原子性的,Redis 还支持各种不同的排序能力。

 

目录结构:

 

根目录下:

      redis.conf 默认配置文件

Src 目录:

make 命令执行完成后,会在 src 目录下生成 5 个可执行文件,分别是 redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump,各命令详情请参考 5.7redis 命令详解

 

5.4  解压

解压 Redis 的 tar 包很简单:

 tar -zxvf redis-2.8.5.tar.gz

这样就在当前目录下新建了一个包含发行版源代码的目录,必须 cd 进入这个目录以继续服务器的编译。

5.5  编译及安装

进入 redis 解压目录,执行如下命令编译 Redis:

cd <REDIS_FILE>

make 

 

5.6  配置

接着,复制 redis.conf 到 <REDIS_HOME>/conf/ 下,修改配置文件,来配置 Redis 服务器。

 vi <REDIS_HOME>/conf/redis.conf

我们一般只需要作简单的配置,参考 7 Redis 说明

查看配置文件:grep -v ‘^#\|^$’ redis.conf

需设置内核针对内存分配的策略:6.6 调整 overcommit_memory 参数

5.7  设置环境变量

进入当前用户主目录:

vi .bash_profile

PATH=$PATH:.:$<REDIS_HOME>/bin:$PATH

保存后执行如下命令

 . .bash_profile

退出终端后,重新登录后查看环境变量是否生效

5.8  启动、停止重新加载 Redis 配置

进入 <REDIS_HOME> 的 bin 目录下。

5.8.1      启动 Redis 服务器

命令:

      cd <REDIS_HOME>/bin

redis-server conf/redis.conf

注:此命令仅有一个启动参数,指定 <REDIS_FILE> 目录下的配置文件,不加参数执行默认配置。

测试启动 redis-cli ping 返回 PONG,启动成功。

查看端口是否被占用:netstat –ntlp |grep 6379 

5.8.2      停止 Redis

关闭服务

redis-cli shutdown

如果非默认端口,可指定端口:

redis-cli -p 6380 shutdown

5.8.3      连接 Redis

两种连接方式:

1:window DOS 方式:tentel 主机 IP 端口号(默认为 127.0.0.1:6379)

2:linux 客户端方式:redis-cli 主机 IP 端口号(默认为 127.0.0.1 6379)

5.9  redis 常用命令详解

5.9.1      redis-benchmark

Redis 性能测试工具,测试 Redis 在你的系统及你的配置下的读写性能。

redis 的基准信息和性能检测。

redis-benchmark -h localhost -p 6379 -c 100 -n 100000

100 个并发连接,100000 个请求,检测 host 为 localhost 端口为 6379 的 redis 服务器性能

./redis-benchmark -n 100000 –c 50
    ====== –c 50 ======
    100000 requests completed in 1.93 seconds (100000 个请求完成于 1.93 秒)
    50 parallel clients (每个请求有 50 个并发客户端)
    3 bytes payload (每次写入 3 字节)
    keep alive: 1 (保持 1 个连接)
    58.50% <= 0 milliseconds
    99.17% <= 1 milliseconds
    99.58% <= 2 milliseconds
    99.85% <= 3 milliseconds
    99.90% <= 6 milliseconds
    100.00% <= 9 milliseconds

(所有请求在 62 毫秒内完成)
    114293.71 requests per second(每秒 114293.71 次查询)

redis-benchmark参数

-h

设置检测主机 IP 地址,默认为127.0.0.1

-p

设置检测主机的端口号,默认为6379

-s<socket>

服务器套接字 ( 压倒主机和端口)

-c

并发连接数

-n

请求数

-d

测试使用的数据集的大小 / 字节的值 ( 默认 3 字节)

-k

1:表示保持连接 ( 默认值)0:重新连接

-r

SET/GET/INCR方法使用随机数插入数值,设置 10 则插入值为rand:000000000000 – rand:000000000009

-P

默认为 1( 无管道 ),当网络延迟过长时,使用管道方式通信( 请求和响应打包发送接收)

-q

简约信息模式,只显示查询和秒值等基本信息。

–csv

CSV 格式输出信息

-l

无线循环插入测试数据,ctrl+c停止

-t<tests>

只运行 <tests> 测试逗号分隔的列表命令,如:-t ping,set,get

-I

空闲模式。立即打开 50 个空闲连接和等待<span “=”” style=”word-wrap: break-word;”>

例子:

$ redis-benchmark基本测试

$ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20

$ redis-benchmark -t set -n 1000000 -r 100000000

$ redis-benchmark -t ping,set,get -n 100000 –csv

$ redis-benchmark -r 10000 -n 10000 lpush mylist ele:rand:000000000000

5.9.2      redis-server

Redis 服务器的 daemon 启动程序

redis-server        启动并加装默认配置文件[/path/to/redis.conf]

redis-server        /biran/conf/redis.conf 启动并加装指定配置文件

redis-server – (read config from stdin)  使用标准输入读取配置为启动参数

redis-server –test-memory 256 检测 256MB 内存

redis-server –version 查版本号

5.9.3      redis-cli

Redis 命令行操作工具。当然,你也可以用 telnet 根据其纯文本协议来操作

可输入 redis-cli 直接进入命令行操作界面。

redis-cli参数

-h

设置检测主机 IP 地址,默认为127.0.0.1

-p

设置检测主机的端口号,默认为6379

-s<socket>

服务器套接字 ( 压倒主机和端口)

-a

连接到 Master 服务器时使用的密码

-r

执行指定的 N 次命令

-i

执行命令后等待 N 秒,如 –i 0.1 info( 执行后等 0.1)

-n

指定连接 NID数据库,如 –n 3( 连接 3 号数据库)

-x

从控制台输入的信息中读取最后一个参数

-d

定义多个定界符为默认输出格式(默认: \n

–raw

使用原数据格式返回输出内容

–latency

进入一个不断延时采样的特殊模式

–slave

模拟一个从服务器到主服务器的命令显示反馈

–pipe

使用管道协议模式

–bigkeys

监听显示数据量大的 key 值,–bigkeys -i 0.1

–help

显示命令行帮助信息

–version

显示版本号

例子:

$ redis-cli进入命令行模式

$ redis-cli -r 3 info 重复执行 info 命令三次

$ cat testStr.txt | redis-cli -x set testStr读取 testStr.txt 文件所有内容设置为 testStr 的值

$ redis-cli -r 100 lpush mylist x

$ redis-cli -r 100 -i 1 info | grep used_memory_human

 

 

 

5.10    创建主从服务器

5.10.1 配置主从服务器

方式可以有 2 种:1 master -> slave,2 master -> slave -> slave -> slave..

一个集群可以包含最多 4096 个节点(主节点 master 和从节点 slave),建议最多设置几百个节点

进入 Redis 安装目录,创建主从配置文件

 cd <REDIS_HOME>

创建主从服务器工作目录及对应的配置、日志等目录,服务器目录创建规则

名称 + 编号 + 端口号

  

Master100_6379

主服务器

 

Slave101_6380

从服务器

对应 Master100 的从服务器

Master200_6381

主服务器

 

Slave201_6382

从服务器

对应 Master200 的从服务器

 

mkdir Master100_6379 Slave101_6380

 mkdir Master100_6379/conf Master100_6379/log Master100_6379/data

 mkdir Slave101_6380/conf Slave101_6380/log Slave101_6380/data

复制配置文件到服务器的 conf 目录

cp redis.conf Master100_6379/conf/redis.conf

cp redis.conf  Slave101_6380/conf/slave.conf

修改主服务器配置文件:

pidfile /redis/redis/Master100_6379/run/redis_Master100_6379.pid

port 6379

logfile /redis/redis/Master100_6379/log/stdout.log

dbfilename /redis/redis/Master100_6379/data/dump.rdb

appendfilename /redis/redis/Master100_6379/log//appendonly.aof

修改从服务器配置文件:

pidfile /redis/redis/Slave101_6380/run/redis_ Slave101_6380.pid

port 6380

logfile /redis/redis/Slave101_6380/log/stdout.log

dbfilename /redis/redis/Slave101_6380/data/dump.rdb

slaveof 127.0.0.1 6379

appendfilename /redis/redis/ Slave101_6380/log//appendonly.aof

 

启动主服务器:

redis-server /redis/redis/Master100_6379/conf/redis.conf   

插入测试数据:

redis-benchmark

启动从服务器:

redis-server /redis/redis/Slave101_6380/conf/slave.conf

查询主从服务是否已运行:

ps xal|grep redis 

 

进入主从服务器目录,查询对比所有服务器数据文件的散列值和文件大小:

find . -type f -name “*.rdb” | xargs md5sum

find . -type f -name “*.rdb” | xargs ls -l

生成报文摘要并验证,如果对比成功则数据已同步:

find . -type f -name “*.rdb” | xargs md5sum >biran   

md5sum –check biran

 

强制同步数据到磁盘:

redis-cli save  或 redis-cli -p 6380 save (根据端口号指定某台服务器同步)

5.10.2 备份服务器方案

增设一台主机备份服务器,执行定时启动,同步,停止脚本,或直接在服务器上 cp rdb 数据文件

Redis-server conf/bak.conf

redis-cli save
redis-cli shutdown

6      FAQ

6.1  Redis 编译失败怎么办

l  检查配置参数是否正确

l  当前用户对 –prefix 目录是否有权限

l  系统是否安装 gcc 编译工具

l  如果编译失败再次编译出现故障,请删除 Redis 的源代码目录,再次解压 Redis,重新编译。

6.2  Redis 启动失败

启动 redis 服务失败,一般情况下是因为 redis.conf 文件有问题,建议检查或找个可用的配置文件进行覆盖

6.3  Redis 虚拟内存方式无法启动

启动 redis 服务失败,提示如下信息:

ARE YOU SURE YOU WANT TO USE VM?

Redis Virtual Memory is going to be deprecated soon,

we think you should NOT use it, but use Redis only if

your data is suitable for an in-memory database.

If you *really* want VM add this in the config file:

    really-use-vm yes

此时需在配置文件中增加 really-use-vm yes,重启即可。

6.4  升级安装前没有停止已经运行 Redis 进程,怎么处理

此种情况下,在启动 Redis 时报告端口已经被占用。

解决办法,只有用命令行 Kill - 9 逐个杀掉所有本用户启动的 Redis 进程。然后再启动 Redis。

6.5  Redis 主从结构,主服务器宕机解决方法

绝对不能重新启动主服务器,如果主服务器没有配置持久化,否则数据会全部丢失。

解决方法是连接从服务器,做 save 操作。将会在从服务器的 data 目录保存一份从服务器最新的 dump.rdb 文件。将这份 dump.rdb 文件拷贝到主服务器的 data 目录下。再重启主服务器。

6.6  调整 overcommit_memory 参数

如果内存情况比较紧张的话,需要设定内核参数 overcommit_memory,指定内核针对内存分配的策略,其值可以是 0、1、2。
0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2,表示内核允许分配超过所有物理内存和交换空间总和的内存
Redis 在 dump 数据的时候,会 fork 出一个子进程,理论上 child 进程所占用的内存和 parent 是一样的,比如 parent 占用的内存为 8G,这个时候也要同样分配 8G 的内存给 child, 如果内存无法负担,往往会造成 redis 服务器的 down 机或者 IO 负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)。

设置方式有两种,需确定当前用户的权限活使用 root 用户修改:

1:重设文件 echo 1 > /proc/sys/vm/overcommit_memory(默认为 0)

2:echo “vm.overcommit_memory=1” >> /etc/sysctl.conf

/sbin/sysctl -p

 

6.7  安装 tcmalloc 包

Redis 并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西。所以系统内存分配器的性能及碎片率会对 Redis 造成一些性能上的影响。在最新版本中,jemalloc 已经作为源码包的一部分包含在源码包中,所以可以直接被使用。如果要使用 tcmalloc 的话,是需要自己安装的。

tcmalloc 是 google-proftools(http://code.google.com/p/gperftools/downloads/list)中的一部分,所以我们实际上需要安装 google-proftools。如果你是在 64 位机器上进行安装,需要先安装其依赖的 libunwind 库

wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz

tar zxvf libunwind-0.99-alpha.tar.gz

cd libunwind-0.99-alpha/

CFLAGS=-fPIC ./configure

make CFLAGS=-fPIC

make CFLAGS=-fPIC install

然后再进行 google-preftools 的安装

wget http://google-perftools.googlecode.com/files/google-perftools-1.8.1.tar.gz

tar zxvf google-perftools-1.8.1.tar.gz

cd google-perftools-1.8.1/

./configure  –disable-cpu-profiler –disable-heap-profiler –disable-heap-checker –disable-debugalloc –enable-minimal

make && make install

sudo echo “/usr/local/lib” > /etc/ld.so.conf.d/usr_local_lib.conf  #如果没有这个文件,自己建一个

sudo /sbin/ldconfig

然后再进行 Redis 的安装,在 make 时指定相应的参数以启用 tcmalloc

7      Redis 配置说明

#  Redis 示例配置文件

 

# 注意单位问题:当需要设置内存大小的时候,可以使用类似 1k、5GB、4M 这样的常见格式:

# 1k => 1000 bytes

# 1kb => 1024 bytes

# 1m => 1000000 bytes

# 1mb => 1024*1024 bytes

# 1g => 1000000000 bytes

# 1gb => 1024*1024*1024 bytes

# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其内存单位转换方式如下(不区分大小写,比如 1gb 1Gb 1GB 1gB 均可)

 

##########  基本配置 ##########

 

# 默认情况下,redis 不是在后台模式运行的,如果需要在后台进程运行,把该项的值更改为 yes,默认为 no

daemonize no

 

# 如 redis 服务以后台进程运行的时候,Redis 默认会把 pid 写入 /var/run/redis.pid 文件组,你可以配置到其他文件路径。

# 当运行多个 redis 服务时,需要指定不同的 pid 文件和端口

pidfile /var/run/redis.pid

 

# 指定 redis 监听端口,默认为 6379

# 如果端口设置为 0,Redis 就不会监听 TCP 套接字。

port 6379

 

# 指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,默认将处理所有请求,

# 在生产环境中最好设置该项

# bind 127.0.0.1

 

# 指定用来监听连接的 unxi 套接字的路径。这个没有默认值,所以如果不指定的话,Redis 就不会通过 unix 套接字来监听。

# unixsocket /tmp/redis.sock

# unixsocketperm 755

 

# 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接

# 默认值:0 代表禁用,永不关闭

timeout 0

 

# 指定日志记录级别

# Redis 总共支持四个级别:debug、verbose、notice、warning,默认为 verbose

# debug  记录很多信息,用于开发和测试

# varbose 很多精简的有用信息,不像 debug 会记录那么多

# notice 普通的 verbose,常用于生产环境

# warning 只有非常重要或者严重的信息会记录到日志

loglevel verbose

 

# 配置 log 文件名称和全路径地址

# 默认值为 stdout,使用“标准输出”,默认后台模式会输出到 /dev/null

logfile stdout

 

# 要使用 linux 系统日志记录器很简单,只要设置 ”syslog-enabled=yes”,并且需要设置其他 syslog 参数,默认是 no

# syslog-enabled no

 

# 指定 linux 系统日志 syslog 的标示符,若是 ”syslog-enabled=no”,则这个选项无效。

# syslog-ident redis

 

# 指定 linux 系统日志 syslog 设备(facility),必须是 USER 或者 LOCAL0 到 LOCAL7 之间

# syslog-facility local0

 

# 可用数据库数,默认值为 16,默认数据库存储在 DB 0 号 ID 库中,无特殊需求,建议仅设置一个数据库 databases 1

# 查询数据库使用  SELECT <dbid>

# dbid 介于 0 到 ‘databases’-1 之间

databases 16

 

##########  SNAPSHOTTING 快照  ##########

#

# 把数据库存到磁盘上:

#

#  save <seconds> <changes>

#  会在指定秒数和数据变化次数之后把数据库写到磁盘上。

#

#  下面的例子将会进行把数据写入磁盘的操作:

#  900 秒 (15 分钟) 之后,且至少有 1 个 key(次)变更

#  300 秒 (5 分钟) 之后,且至少有 10 个 key(次)变更

#  60 秒之后,且至少有 10000 个 key(次)变更

#

#  注意:如果不需要写磁盘,则把所有 “save” 设置注释掉,即实现全内存服务器。

 

save 900 1

save 300 10

save 60 10000

 

# 当导出到 .rdb 数据库时是否用 LZF 压缩字符串对象。

# 默认设置为 “yes”,

# 如果想节省 CPU 的话,可以把这个设置为 “no”,但是如果有可以压缩的 key 却没有压缩的话,那数据文件就会变得更大

rdbcompression yes

 

# 数据库的文件名及存放路径

dbfilename dump.rdb

 

# 工作目录

# 本地数据库会写到这个目录下,文件名就是上面的 “dbfilename” 的值。

# 累加文件也放这里。

# 注意你这里指定的必须是目录,不是文件名。

dir ./

 

##########  REPLICATION 同步 ##########

#

# 主从同步。通过 slaveof 配置来实现 Redis 实例的备份。

# 注意,这里是本地从远端复制数据。也就是说,本地可以有不同的数据库文件、绑定不同的 IP、监听不同的端口。

# 当本机为从服务时,设置主服务的 IP 及端口,在 Redis 启动时,它会自动从主服务进行数据同步

# slaveof <masterip> <masterport>

 

# 如果主服务 master 设置了密码(通过下面的 “requirepass” 选项来配置),slave 服务连接 master 的密码,那么 slave 在开始同步之前必须进行身份验证,否则它的同步请求会被拒绝。

# 当本机为从服务时,设置主服务的连接密码

# masterauth <master-password>

 

# 当一个 slave 失去和 master 的连接,或者同步正在进行中,slave 的行为有两种可能:

# 1) 如果 slave-serve-stale-data 设置为 “yes” (默认值),slave 会继续响应客户端请求,可能是正常数据,也可能是还没获得值的空数据。

# 2) 如果 slave-serve-stale-data 设置为 “no”,slave 会回复 ” 正在从 master 同步(SYNC with master in progress)” 来处理各种请求,除了 INFO 和 SLAVEOF 命令。

slave-serve-stale-data yes

 

# slave 根据指定的时间间隔向服务器发送 ping 请求。

# 时间间隔可以通过 repl_ping_slave_period 来设置。

# 默认 10 秒

# repl-ping-slave-period 10

 

# 下面的选项设置了大块数据 I /O、向 master 请求数据和 ping 响应的过期时间。

# 默认值 60 秒。

# 一个很重要的事情是:确保这个值比 repl-ping-slave-period 大,否则 master 和 slave 之间的传输过期时间比预想的要短。

# repl-timeout 60

 

##########  SECURITY 安全 ##########

 

# 要求客户端在处理任何命令时都要验证身份和设置密码。

# 如果你不相信请求者,这个功能很有用。

# 为了向后兼容的话,这段应该注释掉。而且大多数人不需要身份验证(例如:它们运行在自己的服务器上。)

# 警告:外部使用者可以每秒尝试 150k 的密码来试图破解密码,这意味着你需要一个高强度的密码,否则破解太容易了。

# 设置连接密码

# requirepass foobared

 

# 命令重命名,可设置多个

# 在共享环境下,可以为危险命令改变名字。比如,你可以为 CONFIG 改个其他不太容易猜到的名字,这样你自己仍然可以使用,而别人却没法知道它。

# 例如:

# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

# rename-command info  info_biran

# rename-command set    set_biran

# 甚至也可以通过给命令赋值一个空字符串来完全禁用这条命令:

# rename-command CONFIG “”

 

##########  LIMITS 限制  ##########

 

# 设置最大同时连接客户端数量。

# 默认没有限制,这个关系到 Redis 进程能够打开的文件描述符数量。

# 特殊值 ”0″ 表示没有限制。

# 一旦达到这个限制,Redis 会关闭所有新连接并发送错误 ” 达到最大用户数上限(max number of clients reached)”

# maxclients 128

 

# 不要用比设置的上限更多的内存。一旦内存使用达到上限,Redis 会根据选定的回收策略 (参见:maxmemmory-policy:内存策略设置) 删除 key。

# 如果因为删除策略问题 Redis 无法删除 key,或者策略设置为 “noeviction”,Redis 会回复需要更多内存的错误信息给命令。

# 例如,SET,LPUSH 等等。但是会继续合理响应只读命令,比如:GET。

# 在使用 Redis 作为 LRU 缓存,或者为实例设置了硬性内存限制的时候 (使用 “noeviction” 策略) 的时候,这个选项还是满有用的。

# 警告:当一堆 slave 连上达到内存上限的实例的时候,响应 slave 需要的输出缓存所需内存不计算在使用内存当中。

# 这样当请求一个删除掉的 key 的时候就不会触发网络问题/重新同步的事件,然后 slave 就会收到一堆删除指令,直到数据库空了为止。

# 简而言之,如果你有 slave 连上一个 master 的话,那建议你把 master 内存限制设小点儿,确保有足够的系统内存用作输出缓存。

# (如果策略设置为 ”noeviction” 的话就不无所谓了)

# 设置最大内存,达到最大内存设置后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。

# maxmemory 256000000 分配 256M 内存

# maxmemory <bytes>

 

# 内存策略:如果达到内存限制了,Redis 如何删除 key。你可以在下面五个策略里面选:

#

# volatile-lru -> 根据 LRU 算法生成的过期时间来删除。

# allkeys-lru -> 根据 LRU 算法删除任何 key。

# volatile-random -> 根据过期设置来随机删除 key。

# allkeys->random -> 无差别随机删。

# volatile-ttl -> 根据最近过期时间来删除(辅以 TTL)

# noeviction -> 谁也不删,直接在写操作时返回错误。

#

# 注意:对所有策略来说,如果 Redis 找不到合适的可以删除的 key 都会在写操作时返回一个错误。

#

#      这里涉及的命令:set setnx setex append

#      incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd

#      sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby

#      zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby

#      getset mset msetnx exec sort

#

# 默认值如下:

# maxmemory-policy volatile-lru

 

# LRU 和最小 TTL 算法的实现都不是很精确,但是很接近(为了省内存),所以你可以用样例做测试。

# 例如:默认 Redis 会检查三个 key 然后取最旧的那个,你可以通过下面的配置项来设置样本的个数。

# maxmemory-samples 3

 

##########  APPEND ONLY MODE 纯累加模式 ##########

 

# 默认情况下,Redis 是异步的把数据导出到磁盘上。因为 redis 本身同步数据文件是按上面 save 条件来同步的,所以有的数据会在一段时间内只存在于内存中,这种情况下,当 Redis 宕机的时候,最新的数据就丢了。

# 如果不希望丢掉任何一条数据的话就该用纯累加模式:一旦开启这个模式,Redis 会把每次写入的数据在接收后都写入 appendonly.aof 文件。

# 每次启动时 Redis 都会把这个文件的数据读入内存里。

#

# 注意,异步导出的数据库文件和纯累加文件可以并存(此时需要把上面所有 ”save” 设置都注释掉,关掉导出机制)。

# 如果纯累加模式开启了,那么 Redis 会在启动时载入日志文件而忽略导出的 dump.rdb 文件。

#

# 重要:查看 BGREWRITEAOF 来了解当累加日志文件太大了之后,怎么在后台重新处理这个日志文件。

# 设置:yes 为纯累加模式

appendonly no

 

# 设置纯累加文件名字及保存路径,默认:”appendonly.aof”

# appendfilename appendonly.aof

 

# fsync() 请求操作系统马上把数据写到磁盘上,不要再等了。

# 有些操作系统会真的把数据马上刷到磁盘上;有些则要磨蹭一下,但是会尽快去做。

# Redis 支持三种不同的模式:

#

# no:不要立刻刷,只有在操作系统需要刷的时候再刷。比较快。

# always:每次写操作都立刻写入到 aof 文件。慢,但是最安全。

# everysec:每秒写一次。折衷方案。

# 默认的 “everysec” 通常来说能在速度和数据安全性之间取得比较好的平衡。

# 如果你真的理解了这个意味着什么,那么设置 ”no” 可以获得更好的性能表现(如果丢数据的话,则只能拿到一个不是很新的快照);

# 或者相反的,你选择 “always” 来牺牲速度确保数据安全、完整。

#

# 如果不确定这些模式的使用,建议使用 “everysec”

#

# appendfsync always

appendfsync everysec

# appendfsync no

 

# 如果 AOF 的同步策略设置成 “always” 或者 “everysec”,那么后台的存储进程 (后台存储或写入 AOF 日志) 会产生很多磁盘 I / O 开销。

# 某些 Linux 的配置下会使 Redis 因为 fsync() 而阻塞很久。

# 注意,目前对这个情况还没有完美修正,甚至不同线程的 fsync() 会阻塞我们的 write(2) 请求。

#

# 为了缓解这个问题,可以用下面这个选项。它可以在 BGSAVE 或 BGREWRITEAOF 处理时阻止 fsync()。

#

# 这就意味着如果有子进程在进行保存操作,那么 Redis 就处于 ” 不可同步 ” 的状态。

# 这实际上是说,在最差的情况下可能会丢掉 30 秒钟的日志数据。(默认 Linux 设定)

#

# 如果你有延迟的问题那就把这个设为 “yes”,否则就保持 “no”,这是保存持久数据的最安全的方式。

no-appendfsync-on-rewrite no

 

# 自动重写 AOF 文件

# 如果 AOF 日志文件大到指定百分比,Redis 能够通过 BGREWRITEAOF 自动重写 AOF 日志文件。

#

# 工作原理:Redis 记住上次重写时 AOF 日志的大小(或者重启后没有写操作的话,那就直接用此时的 AOF 文件),

#          基准尺寸和当前尺寸做比较。如果当前尺寸超过指定比例,就会触发重写操作。

#

# 你还需要指定被重写日志的最小尺寸,这样避免了达到约定百分比但尺寸仍然很小的情况还要重写。

#

# 指定百分比为 0 会禁用 AOF 自动重写特性。

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

 

##########  SLOW LOG 慢查询日志  ##########

 

# Redis 慢查询日志可以记录超过指定时间的查询。运行时间不包括各种 I / O 时间。

# 例如:连接客户端,发送响应数据等。只计算命令运行的实际时间(这是唯一一种命令运行线程阻塞而无法同时为其他请求服务的场景)

#

# 你可以为慢查询日志配置两个参数:一个是超标时间,单位为微妙,记录超过个时间的命令。

# 另一个是慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录会被删掉。

#

# 下面的时间单位是微秒,所以 1000000 就是 1 秒。注意,负数时间会禁用慢查询日志,而 0 则会强制记录所有命令。

slowlog-log-slower-than 10000

 

# 这个长度没有限制。只要有足够的内存就行。你可以通过 SLOWLOG RESET 来释放内存。

slowlog-max-len 128

 

##########  VIRTUAL MEMORY 虚拟内存 ##########

 

###  警告!虚拟内存在 Redis 2.4 是反对的,因性能问题,2.4 版本 VM 机制彻底废弃,不建议使用此配置!!!!!!!!!!!

# 虚拟内存可以使 Redis 在内存不够的情况下仍然可以将所有数据序列保存在内存里。

# 为了做到这一点,高频 key 会调到内存里,而低频 key 会转到交换文件里,就像操作系统使用内存页一样。

# 要使用虚拟内存,只要把 “vm-enabled” 设置为 “yes”,并根据需要设置下面三个虚拟内存参数就可以了。

vm-enabled no

 

# 这是交换文件的路径。估计你猜到了,交换文件不能在多个 Redis 实例之间共享,所以确保每个 Redis 实例使用一个独立交换文件。

# 最好的保存交换文件 (被随机访问) 的介质是固态硬盘(SSD)。

# *** 警告 *** 如果你使用共享主机,那么默认的交换文件放到 /tmp 下是不安全的。

# 创建一个 Redis 用户可写的目录,并配置 Redis 在这里创建交换文件。

vm-swap-file /tmp/redis.swap

 

# “vm-max-memory” 配置虚拟内存可用的最大内存容量。

# 如果交换文件还有空间的话,所有超标部分都会放到交换文件里。

# “vm-max-memory” 设置为 0 表示系统会用掉所有可用内存,建议设置为剩余内存的 60%-80%。

# 将所有大于 vm-max-memory 的数据存入虚拟内存, 无论 vm-max-memory 设置多小, 所有索引数据都是内存存储的(Redis 的索引数据就是 keys), 也就是说, 当 vm-max-memory 设置为 0 的时候, 其实是所有 value 都存在于磁盘。默认值为 0。

vm-max-memory 0

 

# Redis 交换文件是分成多个数据页的。

# 一个可存储对象可以被保存在多个连续页里,但是一个数据页无法被多个对象共享。

# 所以,如果你的数据页太大,那么小对象就会浪费掉很多空间。

# 如果数据页太小,那用于存储的交换空间就会更少(假定你设置相同的数据页数量)

# 如果你使用很多小对象,建议分页尺寸为 64 或 32 个字节。

# 如果你使用很多大对象,那就用大一些的尺寸。

# 如果不确定,那就用默认值 :)

vm-page-size 32

 

# 交换文件里数据页总数。

# 根据内存中分页表(已用 / 未用的数据页分布情况),磁盘上每 8 个数据页会消耗内存里 1 个字节。

# 交换区容量 = vm-page-size * vm-pages

# 根据默认的 32 字节的数据页尺寸和 134217728 的数据页数来算,Redis 的数据页文件会占 4GB,而内存里的分页表会消耗 16MB 内存。

# 为你的应验程序设置最小且够用的数字比较好,下面这个默认值在大多数情况下都是偏大的。

vm-pages 134217728

 

# 同时可运行的虚拟内存 I / O 线程数,即访问 swap 文件的线程数。

# 这些线程可以完成从交换文件进行数据读写的操作,也可以处理数据在内存与磁盘间的交互和编码 / 解码处理。

# 多一些线程可以一定程度上提高处理效率,虽然 I / O 操作本身依赖于物理设备的限制,不会因为更多的线程而提高单次读写操作的效率。

# 特殊值 0 会关闭线程级 I /O,并会开启阻塞虚拟内存机制。

# 设置最好不要超过机器的核数, 如果设置为 0, 那么所有对 swap 文件的操作都是串行的. 可能会造成比较长时间的延迟, 但是对数据完整性有很好的保证.

vm-max-threads 4

 

##########  ADVANCED CONFIG 高级配置 ##########

 

# 当有大量数据时,适合用哈希编码(这会需要更多的内存),元素数量上限不能超过给定限制。

# Redis Hash 是 value 内部为一个 HashMap,如果该 Map 的成员数比较少,则会采用类似一维线性的紧凑格式来存储该 Map, 即省去了大量指针的内存开销,如下 2 个条件任意一个条件超过设置值都会转换成真正的 HashMap,

# 当 value 这个 Map 内部不超过多少个成员时会采用线性紧凑格式存储,默认是 64, 即 value 内部有 64 个以下的成员就是使用线性紧凑存储,超过该值自动转成真正的 HashMap。

hash-max-zipmap-entries 512

# 当 value 这个 Map 内部的每个成员值长度不超过多少字节就会采用线性紧凑存储来节省空间。

hash-max-zipmap-value 64

 

# 与 hash-max-zipmap-entries 哈希相类似,数据元素较少的情况下,可以用另一种方式来编码从而节省大量空间。

# list 数据类型多少节点以下会采用去指针的紧凑存储格式

list-max-ziplist-entries 512

# list 数据类型节点值大小小于多少字节会采用紧凑存储格式

list-max-ziplist-value 64

 

# 还有这样一种特殊编码的情况:数据全是 64 位无符号整型数字构成的字符串。

# 下面这个配置项就是用来限制这种情况下使用这种编码的最大上限的。

set-max-intset-entries 512

 

# 与第一、第二种情况相似,有序序列也可以用一种特别的编码方式来处理,可节省大量空间。

# 这种编码只适合长度和元素都符合下面限制的有序序列:

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

 

# 哈希刷新,每 100 个 CPU 毫秒会拿出 1 个毫秒来刷新 Redis 的主哈希表(顶级键值映射表)。

# redis 所用的哈希表实现 (见 dict.c) 采用延迟哈希刷新机制:你对一个哈希表操作越多,哈希刷新操作就越频繁;

# 反之,如果服务器非常不活跃那么也就是用点内存保存哈希表而已。

# 默认是每秒钟进行 10 次哈希表刷新,用来刷新字典,然后尽快释放内存。

# 建议:

# 如果你对延迟比较在意的话就用 “activerehashing no”,每个请求延迟 2 毫秒不太好嘛。

# 如果你不太在意延迟而希望尽快释放内存的话就设置 “activerehashing yes”。

activerehashing yes

 

##########  INCLUDES 包含  ##########

 

# 包含一个或多个其他配置文件。

# 这在你有标准配置模板但是每个 redis 服务器又需要个性设置的时候很有用。

# 包含文件特性允许你引人其他配置文件,所以好好利用吧。

# include /path/to/local.conf

# include /path/to/other.conf

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计25137字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中