Redis 安装与配置
Redis 作为如今比较火热的 NoSQL 数据库,在数据的热数据存储和查询方面有着不错的应用,这篇文章将介绍 Redis 的安装和配置信息。
Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker.It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries.
下载、安装 Redis
1、 Redis 官方下载
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
2、解压
tar xzf redis-3.0.7.tar.gz
3、赋予权限
udo chmod -R 775 redis-3.0.7/
4、make
cd redis-3.0.7/ make
5、install tcl
sudo apt-get install tcl
6、make test
make test
7、make install
make PREFIX=/home/server/software/redisInstall install
配置与启动
1、进入目录
cd /home/server/software/redisInstall/bin
2、文件介绍
文件名 | 介绍 |
redis-benchmark | redis 性能测试工具 |
redis-check-aof | aof 日志检查工具 |
redis-check-dump rdb | 日志检查工具 |
redis-cli | redis 客户端连接 |
redis-server | redis 服务进程 |
3、复制配置文件
cp ../../redis-3.0.7/redis.conf ../
4、启动 redis 服务
cd ..
./bin/redis-server ./redis.conf
26049:M 24 Mar 16:59:56.768 # You requested maxclients of 10000 requiring at least 10032 max file descriptors. 26049:M 24 Mar 16:59:56.768 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted. 26049:M 24 Mar 16:59:56.768 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'. _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.0.7 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 26049 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-'
5、开启后台进程配置
vim redis.conf
# 修改如下字段,重启 server
daemonize yes
6、客户端测试连接
./bin/redis-cli set test "This is a redis test" get test
redis.conf 配置详解
######################### 通用 #########################
# 启动后台进程
daemonize yes
# 后台进程的 pid 文件存储位置
pidfile /var/run/redis.pid
# 默认监听端口
port 6379
# 在高并发的环境中,为避免慢客户端的连接问题,需要设置一个高速后台日志
tcp-backlog 511
# 只接受以下绑定的 IP 请求
# Examples:
# bind 192.168.1.100 10.0.0.1
bind 127.0.0.1
# 设置 unix 监听,默认为空
# unixsocket /tmp/redis.sock
# unixsocketperm 700
#客户端空闲多长时间,关闭链接,0 表示不关闭
timeout 0
# TCP keepalive.
# 如果是非零值,当失去链接时,会使用 SO_KEEPALIVE 发送 TCP ACKs 到客户端。
# 这个参数有两个作用:
# 1.检测断点。
# 2.从网络中间设备来看,就是保持链接
# 在 Linux 上,设定的时间就是发送 ACKs 的周期。
# 注意:达到双倍的设定时间才会关闭链接。在其他内核上,周期依赖于内核设置。
# 一个比较合理的值为 60s
tcp-keepalive 0
# 指定日志级别,以下记录信息依次递减
# debug 用于开发/测试
# verbose 没 debug 那么详细
# notice 适用于生产线
# warning 只记录非常重要的信息
loglevel notice
#日志文件名称,如果为 stdout 则输出到标准输出端,如果是以后台进程运行则不产生日志
logfile ""
# 要想启用系统日志记录器,设置一下选项为 yes
# syslog-enabled no
# 指明 syslog 身份
# syslog-ident redis
# 指明 syslog 设备。必须是一个用户或者是 local0 ~ local7 之一
# syslog-facility local0
#设置数据库数目,第一个数据库编号为:0
databases 16
######################### 快照 #########################
# 在什么条件下保存数据库到磁盘,条件可以有很多个,满足任何一个条件都会进行快照存储
# 在 900 秒之内有一次 key 的变化
save 900 1
# 在 300 秒之内,有 10 个 key 的变化
save 300 10
# 在 60 秒之内有 10000 个 key 变化
save 60 10000
# 当持久化失败的时候,是否继续提供服务
stop-writes-on-bgsave-error yes
# 当写入磁盘时,是否使用 LZF 算法压缩数据,默认为 yes
rdbcompression yes
# 是否添加 CRC64 校验到每个文件末尾--花费时间保证安全
rdbchecksum yes
# 磁盘上数据库的保存名称
dbfilename dump.rdb
# Redis 工作目录,以上数据库保存文件和 AOF 日志都会写入此目录
dir ./
######################### 主从同步 #########################
# 主从复制,当本机是 slave 时配置
# slaveof <masterip> <masterport>
# 当主机需要密码验证时候配置
# masterauth <master-password>
# 当 slave 和 master 丢失链接,或正处于同步过程中。是否响应客户端请求
# 设置为 yes 表示响应
# 设置为 no,直接返回"SYNC with master in progress"(正在和主服务器同步中)
slave-serve-stale-data yes
# 设置 slave 是否为只读。
# 注意:即使 slave 设置为只读,也不能令其暴露在不受信任的网络环境中
slave-read-only yes
# 无硬盘复制功能
repl-diskless-sync no
# 等待多个 slave 一起来请求之间的间隔时间
repl-diskless-sync-delay 5
# 设置 slave 给 master 发送 ping 的时间间隔
# repl-ping-slave-period 10
# 设置数据传输 I/O,主机数据、ping 响应超时时间,默认 60s
# 这个时间一定要比 repl-ping-slave-period 大,否则会不断检测到超时
# repl-timeout 60
# 是否在 SYNC 后 slave socket 上禁用 TCP_NODELAY?
# 如果你设置为 yes,Redis 会使用少量 TCP 报文和少量带宽发送数据给 slave。
# 但是这样会在 slave 端出现延迟。如果使用 Linux 内核的默认设置,大概 40 毫秒。
# 如果你设置为 no,那么在 slave 端研究就会减少但是同步带宽要增加。
# 默认我们是为低延迟优化的。
# 但是如果流量特别大或者主从服务器相距比较远,设置为 yes 比较合理。
repl-disable-tcp-nodelay no
# 设置复制的后台日志大小。
# 复制的后台日志越大, slave 断开连接及后来可能执行部分复制花的时间就越长。
# 后台日志在至少有一个 slave 连接时,仅仅分配一次。
# repl-backlog-size 1mb
# 在 master 不再连接 slave 后,后台日志将被释放。下面的配置定义从最后一个 slave 断开连接后需要释放的时间(秒)。
# 0 意味着从不释放后台日志
# repl-backlog-ttl 3600
# 设置 slave 优先级,默认为 100
# 当主服务器不能正确工作的时候,数字低的首先被提升为主服务器,但是 0 是禁用选择
slave-priority 100
# 如果少于 N 个 slave 连接,且延迟时间 <=M 秒,则 master 可配置停止接受写操作。
# 例如需要至少 3 个 slave 连接,且延迟 <=10 秒的配置:
# min-slaves-to-write 3
# min-slaves-max-lag 10
# 设置 0 为禁用
# 默认 min-slaves-to-write 为 0 (禁用), min-slaves-max-lag 为 10
######################### 安全 #########################
# 设置客户端连接密码,因为 Redis 响应速度可以达到每秒 100w 次,所以密码要特别复杂
# requirepass 1413
# 命令重新命名,或者禁用。
# 重命名命令为空字符串可以禁用一些危险命令比如:FLUSHALL 删除所有数据
# 需要注意的是,写入 AOF 文件或传送给 slave 的命令别名也许会引起一些问题
# rename-command CONFIG ""
# 设置客户端连接密码,因为 Redis 响应速度可以达到每秒 100w 次,所以密码要特别复杂
requirepass 1413
# 命令重新命名,或者禁用。
# 重命名命令为空字符串可以禁用一些危险命令比如:FLUSHALL 删除所有数据
# 需要注意的是,写入 AOF 文件或传送给 slave 的命令别名也许会引起一些问题
# rename-command CONFIG ""
######################### 限制 #########################
# 设置最多链接客户端数量,默认为 10000。
# 实际可以接受的请求数目为设置值减去 32,这 32 是 Redis 为内部文件描述符保留的
# maxclients 10000
# 设置最多链接客户端数量,默认为 10000。
# 实际可以接受的请求数目为设置值减去 32,这 32 是 Redis 为内部文件描述符保留的
# maxclients 10000
# 设置最大使用内存数量,在把 Redis 当作 LRU 缓存时特别有用。
# 设置的值要比系统能使用的值要小
# 因为当启用删除算法时,slave 输出缓存也要占用内存
# maxmemory <bytes>
#达到最大内存限制时,使用何种删除算法
# volatile-lru 使用 LRU 算法移除带有过期标致的 key
# allkeys-lru -> 使用 LRU 算法移除任何 key
# volatile-random -> 随机移除一个带有过期标致的 key
# allkeys-random -> 随机移除一个 key
# volatile-ttl -> 移除最近要过期的 key
# noeviction -> 不删除 key,当有写请求时,返回错误
#默认设置为 volatile-lru
# maxmemory-policy noeviction
# LRU 和最小 TTL 算法没有精确的实现
# 为了节省内存只在一个样本范围内选择一个最近最少使用的 key,可以设置这个样本大小
# maxmemory-samples 5
######################### AO 模式 #########################
# AOF 和 RDB 持久化可以同时启用
# Redis 启动时候会读取 AOF 文件,AOF 文件有更好的持久化保证
appendonly no
# AOF 的保存名称,默认为 appendonly.aof
appendfilename "appendonly.aof"
# 设置何时写入追加日志,又三种模式
# no:表示由操作系统决定何时写入。性能最好,但可靠性最低
# everysec:表示每秒执行一次写入。折中方案,推荐
# always:表示每次都写入磁盘。性能最差,比上面的安全一些
# appendfsync always
appendfsync everysec
# appendfsync no
# 当 AOF 同步策略设定为 alway 或 everysec
# 当后台存储进程(后台存储或者 AOF 日志后台写入)会产生很多磁盘开销
# 某些 Linux 配置会使 Redis 因为 fsync() 调用产生阻塞很久
# 现在还没有修复补丁,甚至使用不同线程进行 fsync 都会阻塞我们的同步 write(2) 调用。
# 为了缓解这个问题,使用以下选项在一个 BGSAVE 或 BGREWRITEAOF 运行的时候
# 可以阻止 fsync() 在主程序中被调用,
no-appendfsync-on-rewrite no
# AOF 自动重写(合并命令,减少日志大小)
# 当 AOF 日志大小增加到一个特定比率,Redis 调用 BGREWRITEAOF 自动重写日志文件
# 原理:Redis 会记录上次重写后 AOF 文件的文件大小。
# 如果刚启动,则记录启动时 AOF 大小
# 这个基本大小会用来和当前大小比较。如果当前大小比特定比率大,就会触发重写。
# 你也需要指定一个 AOF 需要被重写的最小值,这样会避免达到了比率。
# 但是 AOF 文件还很小的情况下重写 AOF 文件。
# 设置为 0 禁用自动重写
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
#redis 在启动时可以加载被截断的 AOF 文件,而不需要先执行 redis-check-aof 工具
aof-load-truncated yes
######################### LUA 脚本 #########################
# Lua 脚本的最大执行时间,单位毫秒
# 超时后会报错,并且计入日志
# 当一个脚本运行时间超过了最大执行时间
# 只有 SCRIPT KILL 和 SHUTDOWN NOSAVE 两个命令可以使用。
# SCRIPT KILL 用于停止没有调用写命令的脚本。
# SHUTDOWN NOSAVE 是唯一的一个,在脚本的写命令正在执行
# 用户又不想等待脚本的正常结束的情况下,关闭服务器的方法。
# 以下选项设置为 0 或负数就会取消脚本执行时间限制
lua-time-limit 5000
####################### redis 集群 ########################
# 是否启用集群
# cluster-enabled yes
# 集群配置文件
# 集群配置变更后会自动写入改文件
# cluster-config-file nodes-6379.conf
# 节点互连超时的阀值
# 节点超时时间,超过该时间无法连接主要 Master 节点后,会停止接受查询服务
# cluster-node-timeout 15000
# 控制从节点 FailOver 相关的设置,设为 0,从节点会一直尝试启动 FailOver.
# 设为正数,失联大于一定时间(factor*节点 TimeOut),不再进行 FailOver
# cluster-slave-validity-factor 10
# 最小从节点连接数
# cluster-migration-barrier 1
# 默认为 Yes,丢失一定比例 Key 后(可能 Node 无法连接或者挂掉),集群停止接受写操作
# 设置为 No,集群丢失 Key 的情况下仍提供查询服务
# cluster-require-full-coverage yes
######################### 慢查询 #########################
# Redis 慢查询日志记录超过设定时间的查询,且只记录执行命令的时间
# 不记录 I/O 操作,比如:和客户端交互,发送回复等。
# 时间单位为微妙,1000000 微妙 = 1 秒
# 设置为负数会禁用慢查询日志,设置为 0 会记录所有查询命令
slowlog-log-slower-than 10000
# 日志长度没有限制,但是会消耗内存。超过日志长度后,最旧的记录会被移除
# 使用 SLOWLOG RESET 命令可以回收内存
slowlog-max-len 128
######################### 延迟监测 #########################
# 系统只记录超过设定值的操作,单位是毫秒,0 表示禁用该功能
# 可以通过命令“CONFIG SET latency-monitor-threshold <milliseconds>” 直接设置而不需要重启 redis
latency-monitor-threshold 0
######################### 事件通知 #########################
# 当事件发生时, Redis 可以通知 Pub/Sub 客户端。
# 可以在下表中选择 Redis 要通知的事件类型。事件类型由单个字符来标识:
# K Keyspace 事件,以 _keyspace@<db>_ 的前缀方式发布
# E Keyevent 事件,以 _keysevent@<db>_ 的前缀方式发布
# g 通用事件(不指定类型),像 DEL, EXPIRE, RENAME, …
# $ String 命令
# s Set 命令
# h Hash 命令
# z 有序集合命令
# x 过期事件(每次 key 过期时生成)
# e 清除事件(当 key 在内存被清除时生成)
# A g$lshzxe 的别称,因此 ”AKE” 意味着所有的事件
# notify-keyspace-events 带一个由 0 到多个字符组成的字符串参数。空字符串意思是通知被禁用。
# 例子:启用 list 和通用事件:
# notify-keyspace-events Elg
# 默认所用的通知被禁用,因为用户通常不需要改特性,并且该特性会有性能损耗。
# 注意如果你不指定至少 K 或 E 之一,不会发送任何事件。
notify-keyspace-events ""
#notify-keyspace-events AKE
######################### 高级设置 #########################
# 当有少量条目的时候,哈希使用高效内存数据结构。最大的条目也不能超过设定的阈值。# “少量”定义如下:
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
# 和哈希编码一样,少量列表也以特殊方式编码节省内存。“少量”设定如下:
list-max-ziplist-entries 512
list-max-ziplist-value 64
# 集合只在以下情况下使用特殊编码来节省内存
# -->集合全部由 64 位带符号 10 进制整数构成的字符串组成
# 下面的选项设置这个特殊集合的大小。
set-max-intset-entries 512
# 当有序集合的长度和元素设定为以下数字时,又特殊编码节省内存
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
# HyperLogLog 稀疏表示字节限制
# 这个限制包含了 16 个字节的头部,当一个 HyperLogLog 使用 sparse representation
# 超过了这个显示,它就会转换到 dense representation 上
hll-sparse-max-bytes 3000
# 哈希刷新使用每 100 个 CPU 毫秒中的 1 毫秒来帮助刷新主哈希表(顶级键值映射表)。
# Redis 哈希表使用延迟刷新机制,越多操作,越多刷新。
# 如果服务器空闲,刷新操作就不会进行,更多内存会被哈希表占用
# 默认每秒进行 10 次主字典刷新,释放内存。
# 如果你有硬性延迟需求,偶尔 2 毫秒的延迟无法忍受的话。设置为 no
# 否则设置为 yes
activerehashing yes
# 客户端输出缓存限制强迫断开读取速度比较慢的客户端
# 有三种类型的限制
# normal -> 正常
# slave -> slave 和 MONITOR
# pubsub -> 客户端至少订阅了一个频道或者模式
# 客户端输出缓存限制语法如下(时间单位:秒)
# client-output-buffer-limit <类别> <强制限制> <软性限制> <软性时间>
# 达到强制限制缓存大小,立刻断开链接。
# 达到软性限制,仍然会有软性时间大小的链接时间
# 默认正常客户端无限制,只有请求后,异步客户端数据请求速度快于它能读取数据的速度
# 订阅模式和主从客户端又默认限制,因为它们都接受推送。
# 强制限制和软性限制都可以设置为 0 来禁用这个特性
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# 设置 Redis 后台任务执行频率,比如清除过期键任务。
# 设置范围为 1 到 500,默认为 10.越大 CPU 消耗越大,延迟越小。
# 建议不要超过 100
hz 10
# 当子进程重写 AOF 文件,以下选项开启时,AOF 文件会每产生 32M 数据同步一次。
# 这有助于更快写入文件到磁盘避免延迟
aof-rewrite-incremental-fsync yes
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: rabbitmq 用户管理
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论