鸟哥杂谈Linux环境搭建Redis

Posted 单片机菜鸟哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鸟哥杂谈Linux环境搭建Redis相关的知识,希望对你有一定的参考价值。

忘记过去,超越自己

  • ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
  • ❤️ 本篇创建记录 2023-01-12 ❤️
  • ❤️ 本篇更新记录 2023-01-12 ❤️
  • 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝
  • 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
  • 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志 🔥

目录

1. 前言

学习资料:

Redis 菜鸟教程
Redis 官网
Redis是什么?看这一篇就够了

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对应版本。

https://download.redis.io/releases/

这里我们选择最新稳定版本。

执行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 112 16:52 .
drwxr-xr-x. 20 root root    4096 112 09:46 ..
drwxrwxr-x   8 root root    4096 1216 18:52 redis-7.0.7
-rw-r--r--   1 root root 2979019 1216 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 1216 18:52 .
drwxr-xr-x.  3 root root   4096 112 16:52 ..
-rw-rw-r--   1 root root  40017 1216 18:52 00-RELEASENOTES
-rw-rw-r--   1 root root     51 1216 18:52 BUGS
-rw-rw-r--   1 root root   5027 1216 18:52 CODE_OF_CONDUCT.md
drwxrwxr-x   2 root root   4096 1216 18:52 .codespell
-rw-rw-r--   1 root root   2634 1216 18:52 CONTRIBUTING.md
-rw-rw-r--   1 root root   1487 1216 18:52 COPYING
drwxrwxr-x   7 root root   4096 1216 18:52 deps
-rw-rw-r--   1 root root    405 1216 18:52 .gitattributes
drwxrwxr-x   4 root root   4096 1216 18:52 .github
-rw-rw-r--   1 root root    535 1216 18:52 .gitignore
-rw-rw-r--   1 root root     11 1216 18:52 INSTALL
-rw-rw-r--   1 root root    151 1216 18:52 Makefile
-rw-rw-r--   1 root root   6888 1216 18:52 MANIFESTO
-rw-rw-r--   1 root root  22441 1216 18:52 README.md
-rw-rw-r--   1 root root 106545 1216 18:52 redis.conf
-rwxrwxr-x   1 root root    279 1216 18:52 runtest
-rwxrwxr-x   1 root root    283 1216 18:52 runtest-cluster
-rwxrwxr-x   1 root root   1613 1216 18:52 runtest-moduleapi
-rwxrwxr-x   1 root root    285 1216 18:52 runtest-sentinel
-rw-rw-r--   1 root root   1695 1216 18:52 SECURITY.md
-rw-rw-r--   1 root root  14005 1216 18:52 sentinel.conf
drwxrwxr-x   4 root root   4096 1216 18:52 src
drwxrwxr-x  11 root root   4096 1216 18:52 tests
-rw-rw-r--   1 root root   3055 1216 18:52 TLS.md
drwxrwxr-x   8 root root   4096 1216 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 112 17:44 .
drwxr-xr-x 3 root root     4096 112 17:23 ..
-rwxr-xr-x 1 root root  5197752 112 17:23 redis-benchmark
lrwxrwxrwx 1 root root       12 112 17:23 redis-check-aof -> redis-server
lrwxrwxrwx 1 root root       12 112 17:23 redis-check-rdb -> redis-server
-rwxr-xr-x 1 root root  5411072 112 17:23 redis-cli
-rw-r--r-- 1 root root   106545 112 17:44 redis.conf
lrwxrwxrwx 1 root root       12 112 17:23 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 11421920 112 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 112 17:23 .
drwxr-xr-x. 20 root root 4096 112 09:46 ..
drwxr-xr-x   2 root root 4096 112 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

鸟哥杂谈搭建自己的本地mqtt服务器 emqx