鸟哥杂谈Linux环境搭建Redis
Posted 单片机菜鸟哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鸟哥杂谈Linux环境搭建Redis相关的知识,希望对你有一定的参考价值。
忘记过去,超越自己
- ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
- ❤️ 本篇创建记录 2023-01-12 ❤️
- ❤️ 本篇更新记录 2023-01-12 ❤️
- 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝
- 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
- 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志 🔥
目录
1. 前言
学习资料:
Redis是现在最受欢迎的NoSQL数据库
之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性:
- 基于内存运行,性能高效
- 支持分布式,理论上可以无限扩展
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
开源
的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化
的日志型、Key-Value数据库,并提供多种语言的API
1.1 Redis的应用场景有哪些?
Redis 的应用场景包括:缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统。
除此之外,包括抢票、商品限时秒杀等等业务也会应用到Redis。
1.2 Redis的数据类型
Redis支持五种数据类型:string
(字符串),hash
(哈希),list
(列表),set
(集合)及zset
(sorted set:有序集合)。
2. Linux安装Redis
按照Linux的一些规范。
- 安装目录:希望将redis安装到此目录
/usr/local/redis
- 下载目录:希望将安装包下载到此目录
/usr/local/src
2.1 创建安装目录/usr/local/redis
执行linux命令:
mkdir /usr/local/redis
2.2 进入/usr/local/src下载安装包
首先要找到需要下载的redis对应版本。
这里我们选择最新稳定版本。
执行linux命令:
cd /usr/local/src
wget命令下载安装包:
[root@VM-8-12-centos local]# cd /usr/local/src
[root@VM-8-12-centos src]# cd /usr/local/src
[root@VM-8-12-centos src]# wget http://download.redis.io/releases/redis-7.0.7.tar.gz
--2023-01-12 16:48:58-- http://download.redis.io/releases/redis-7.0.7.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2979019 (2.8M) [application/octet-stream]
正在保存至: “redis-7.0.7.tar.gz”
100%[===============================================================>] 2,979,019 3.32MB/s 用时 0.9s
2023-01-12 16:48:59 (3.32 MB/s) - 已保存 “redis-7.0.7.tar.gz” [2979019/2979019])
[root@VM-8-12-centos src]#
2.3 进行解压
执行linux命令:
tar -xzvf redis-7.0.7.tar.gz
[root@VM-8-12-centos src]# tar -xzvf redis-7.0.7.tar.gz
redis-7.0.7/
redis-7.0.7/.codespell/
redis-7.0.7/.codespell/.codespellrc
redis-7.0.7/.codespell/requirements.txt
redis-7.0.7/.codespell/wordlist.txt
redis-7.0.7/.gitattributes
redis-7.0.7/.github/
省略若干行
[root@VM-8-12-centos src]# ls -al
总用量 2924
drwxr-xr-x. 3 root root 4096 1月 12 16:52 .
drwxr-xr-x. 20 root root 4096 1月 12 09:46 ..
drwxrwxr-x 8 root root 4096 12月 16 18:52 redis-7.0.7
-rw-r--r-- 1 root root 2979019 12月 16 19:01 redis-7.0.7.tar.gz
[root@VM-8-12-centos src]#
2.4 安装到指定目录 /usr/local/redis
执行linux命令:
- cd redis-7.0.7
- make PREFIX=/usr/local/redis install
[root@VM-8-12-centos src]# cd redis-7.0.7/
[root@VM-8-12-centos redis-7.0.7]# ls -al
总用量 288
drwxrwxr-x 8 root root 4096 12月 16 18:52 .
drwxr-xr-x. 3 root root 4096 1月 12 16:52 ..
-rw-rw-r-- 1 root root 40017 12月 16 18:52 00-RELEASENOTES
-rw-rw-r-- 1 root root 51 12月 16 18:52 BUGS
-rw-rw-r-- 1 root root 5027 12月 16 18:52 CODE_OF_CONDUCT.md
drwxrwxr-x 2 root root 4096 12月 16 18:52 .codespell
-rw-rw-r-- 1 root root 2634 12月 16 18:52 CONTRIBUTING.md
-rw-rw-r-- 1 root root 1487 12月 16 18:52 COPYING
drwxrwxr-x 7 root root 4096 12月 16 18:52 deps
-rw-rw-r-- 1 root root 405 12月 16 18:52 .gitattributes
drwxrwxr-x 4 root root 4096 12月 16 18:52 .github
-rw-rw-r-- 1 root root 535 12月 16 18:52 .gitignore
-rw-rw-r-- 1 root root 11 12月 16 18:52 INSTALL
-rw-rw-r-- 1 root root 151 12月 16 18:52 Makefile
-rw-rw-r-- 1 root root 6888 12月 16 18:52 MANIFESTO
-rw-rw-r-- 1 root root 22441 12月 16 18:52 README.md
-rw-rw-r-- 1 root root 106545 12月 16 18:52 redis.conf
-rwxrwxr-x 1 root root 279 12月 16 18:52 runtest
-rwxrwxr-x 1 root root 283 12月 16 18:52 runtest-cluster
-rwxrwxr-x 1 root root 1613 12月 16 18:52 runtest-moduleapi
-rwxrwxr-x 1 root root 285 12月 16 18:52 runtest-sentinel
-rw-rw-r-- 1 root root 1695 12月 16 18:52 SECURITY.md
-rw-rw-r-- 1 root root 14005 12月 16 18:52 sentinel.conf
drwxrwxr-x 4 root root 4096 12月 16 18:52 src
drwxrwxr-x 11 root root 4096 12月 16 18:52 tests
-rw-rw-r-- 1 root root 3055 12月 16 18:52 TLS.md
drwxrwxr-x 8 root root 4096 12月 16 18:52 utils
[root@VM-8-12-centos redis-7.0.7]# make PREFIX=/usr/local/redis install
中间省略非常多打印内容
Hint: It's a good idea to run 'make test' ;)
INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
make[1]: 离开目录“/usr/local/src/redis-7.0.7/src”
[root@VM-8-12-centos redis-7.0.7]#
到这一步就已经编译成功。
2.5 拷贝redis.conf配置文件到安装目录 /usr/local/redis/bin/
执行linux命令:
cp redis.conf /usr/local/redis/bin/
[root@VM-8-12-centos redis-7.0.7]# pwd
/usr/local/src/redis-7.0.7
[root@VM-8-12-centos redis-7.0.7]# cp redis.conf /usr/local/redis/bin/
[root@VM-8-12-centos redis-7.0.7]# cd /usr/local/redis/bin/
[root@VM-8-12-centos bin]# ls -al
总用量 21636
drwxr-xr-x 2 root root 4096 1月 12 17:44 .
drwxr-xr-x 3 root root 4096 1月 12 17:23 ..
-rwxr-xr-x 1 root root 5197752 1月 12 17:23 redis-benchmark
lrwxrwxrwx 1 root root 12 1月 12 17:23 redis-check-aof -> redis-server
lrwxrwxrwx 1 root root 12 1月 12 17:23 redis-check-rdb -> redis-server
-rwxr-xr-x 1 root root 5411072 1月 12 17:23 redis-cli
-rw-r--r-- 1 root root 106545 1月 12 17:44 redis.conf
lrwxrwxrwx 1 root root 12 1月 12 17:23 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 11421920 1月 12 17:23 redis-server
[root@VM-8-12-centos bin]# cd ..
[root@VM-8-12-centos redis]# ls -al
总用量 12
drwxr-xr-x 3 root root 4096 1月 12 17:23 .
drwxr-xr-x. 20 root root 4096 1月 12 09:46 ..
drwxr-xr-x 2 root root 4096 1月 12 17:44 bin
[root@VM-8-12-centos redis]# pwd
/usr/local/redis
[root@VM-8-12-centos redis]#
这里涉及到配置文件,那么还是要看看配置文件有什么?
[root@VM-8-12-centos bin]# cat redis.conf | grep -v ^# | grep -v ^$
bind 127.0.0.1 -::1
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "title listen-addr server-mode"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-diskless-sync-max-replicas 0
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly no
appendfilename "appendonly.aof"
appenddirname "appendonlydir"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
aof-timestamp-enabled no
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-listpack-entries 512
hash-max-listpack-value 64
list-max-listpack-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-listpack-entries 128
zset-max-listpack-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
[root@VM-8-12-centos bin]#
这里需要知道一些常用命令。
# 是否以后台进程运行
daemonize yes
# pid文件位置
pidfile /var/run/redis/redis-server.pid
# 监听端口
port 6379
# 绑定地址,如外网需要连接,设置0.0.0.0
bind 127.0.0.1
# 连接超时时间,单位秒
timeout 300
##日志级别,分别有:
# debug :适用于开发和测试
# verbose :更详细信息
# notice :适用于生产环境
# warning :只记录警告或错误信息
loglevel notice
# 日志文件位置
logfile /var/log/redis/redis-server.log
# 是否将日志输出到系统日志
syslog-enabled no
# 设置数据库数量,默认数据库为0
databases 16
############### 快照方式 ###############
# 在900s(15m)之后,至少有1个key发生变化,则快照
save 900 1
# 在300s(5m)之后,至少有10个key发生变化,则快照
save 300 10
# 在60s(1m)之后,至少有1000个key发生变化,则快照
save 60 10000
# dump时是否压缩数据
rdbcompression yes
# 数据库(dump.rdb)文件存放目录
dir /var/lib/redis
############### 主从复制 ###############
#主从复制使用,用于本机redis作为slave去连接主redis
slaveof <masterip> <masterport>
#当master设置密码认证,slave用此选项指定master认证密码
masterauth <master-password>
#当slave与master之间的连接断开或slave正在与master进行数据同步时,如果有slave请求,当设置为yes时,slave仍然响应请求,此时可能有问题,如果设置no时,slave会返回"SYNC with master in progress"错误信息。但INFO和SLAVEOF命令除外。
slave-serve-stale-data yes
############### 安全 ###############
#配置redis连接认证密码
requirepass foobared
############### 限制 ###############
#设置最大连接数,0为不限制
maxclients 128
##内存清理策略,如果达到此值,将采取以下动作:
# volatile-lru :默认策略,只对设置过期时间的key进行LRU算法删除
# allkeys-lru :删除不经常使用的key
# volatile-random :随机删除即将过期的key
# allkeys-random :随机删除一个key
# volatile-ttl :删除即将过期的key
# noeviction :不过期,写操作返回报错
maxmemory <bytes>
# 如果达到maxmemory值,采用此策略
maxmemory-policy volatile-lru
# 默认随机选择3个key,从中淘汰最不经常用的
maxmemory-samples 3
############### 附加模式 ###############
# AOF持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘
appendonly no
# 指定更新日志文件名
appendfilename appendonly.aof
## AOF持久化三种同步策略:
# appendfsync always #每次有数据发生变化时都会写入appendonly.aof
# appendfsync everysec #默认方式,每秒同步一次到appendonly.aof
# appendfsync no #不同步,数据不会持久化
# 当AOF日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF是否自动重写AOF日志文件。
no-appendfsync-on-rewrite no
############### 虚拟内存 ###############
# 是否启用虚拟内存机制,虚拟内存机将数据分页存放,把很少访问的页放到swap上,内存占用多,最好关闭虚拟内存
vm-enabled no
# 虚拟内存文件位置
vm-swap-file /var/lib/redis/redis.swap
# redis使用的最大内存上限,保护redis不会因过多使用物理内存影响性能
vm-max-memory 0
# 每个页面的大小为32字节
vm-page-size 32
# 设置swap文件中页面数量
vm-pages 134217728
# 访问swap文件的线程数
vm-max-threads 4
############### 高级配置 ###############
# 哈希表中元素(条目)总个数不超过设定数量时,采用线性紧凑格式存储来节省空间
hash-max-zipmap-entries 512
# 哈希表中每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间
hash-max-zipmap-value 64
# list数据类型多少节点以下会采用去指针的紧凑存储格式
list-max-ziplist-entries 512
# list数据类型节点值大小小于多少字节会采用紧凑存储格式
list-max-ziplist-value 64
# set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储
set-max-intset-entries 512
# 是否激活重置哈希
activerehashing yes
完整文件翻译(百度翻译搞的,也可能不对;欢迎指出)
# Redis configuration file example.
# Redis配置文件示例。
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argument:
# 注意,为了读取配置文件,Redis必须以文件路径作为第一个参数开始:
#
# ./redis-server /path/to/redis.conf
# Note on units: when memory size is needed, it is possible to specify
# <以上是关于鸟哥杂谈Linux环境搭建Redis的主要内容,如果未能解决你的问题,请参考以下文章
鸟哥杂谈腾讯云 CentOS8 Linux环境搭建docker
鸟哥杂谈十分钟使用命令行在云服务器Centos环境下搭建NodeJS环境
鸟哥杂谈腾讯云 CentOS8 Linux环境下通过docker安装mysql
鸟哥杂谈腾讯云 CentOS8 Linux环境下通过docker安装mysql
鸟哥杂谈Linux环境下解决端口占用问题 Error: listen EADDRINUSE: address already in use :::8266