01.Redis 简介

Redis 是一个高性能的 key/value 数据库。它是完全开源免费的,并且遵守 BSD 协议。

redis

Redis 特点

  1. 不仅支持 key/value 类型的数据,也支持 list,hash,set,zset 等等数据结构。
  2. 支持持久化,可以把内存数据保存到磁盘上,重启后再次加载到内存中使用。
  3. 支持备份,可以使用主/从模式进行数据备份。

Redis 优势

  1. 数据类型丰富 : Redis 支持 Strings, Lists, Hash, Set 及 Ordered Sets 数据类型操作。
  2. 高性能 : Redis 能读的速度是 110000 次/s ,写的速度是 81000 次/s。
  3. 原子型操作 : Redis 的所有操作都是原子性的,还支持对几个操作完成后的原子性执行。
  4. 丰富的特性 : Redis 支持 publish/subscribe, 通知, key 过期等等特性。

Redis 安装

使用 docker 安装和启动 redis,我们创建 docker-compose.yml

1
2
3
4
5
6
7
8
9
10
services:
redis:
container_name: my-redis
image: redis
restart: always
ports:
- "6379:6379"
volumes:
- ./redis-conf/redis.conf:/etc/redis/redis.conf
- ./redis-data/:/data

redis.conf 是一个默认的配置文件 我们可以根据需要使用自己的配置文件

redis.conf

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
# Redis configuration file example.
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argument:
#
# 开始启动时必须如下指定配置文件

# ./redis-server /path/to/redis.conf

# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 存储单位如下所示

# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes

################################## INCLUDES ###################################

# 如果需要使用多配置文件配置redis,请用include
#
# include /path/to/local.conf
# include /path/to/other.conf

################################## MODULES ##################################### modules

# 手动设置加载模块(当服务无法自动加载时设置)
#
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so

################################## NETWORK #####################################

# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# 设置绑定的ip
bind 127.0.0.1

# 保护模式:不允许外部网络连接redis服务
protected-mode yes

# 设置端口号
port 6379

# TCP listen() backlog.
#
# TCP 连接数,此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度
tcp-backlog 511

# Unix socket.
#
# 通信协议设置,本机通信使用此协议不适用tcp协议可大大提升性能
# unixsocket /tmp/redis.sock
# unixsocketperm 700



# TCP keepalive.
#
# 定期检测cli连接是否存活
tcp-keepalive 300

################################# GENERAL #####################################

# 是否守护进程运行(后台运行)
daemonize yes

# 是否通过upstart和systemd管理Redis守护进程
supervised no

# 以后台进程方式运行redis,则需要指定pid 文件
pidfile /var/run/redis_6379.pid

# 日志级别
# 可选项有: # debug(记录大量日志信息,适用于开发、测试阶段); # verbose(较多日志信息); # notice(适量日志信息,使用于生产环境);
# warning(仅有部分重要、关键信息才会被记录)。
loglevel notice

# 日志文件的位置
logfile ""

# 数据库的个数
databases 16

# 是否显示logo
always-show-logo yes

################################ SNAPSHOTTING ################################
#
# Save the DB on disk:
#
# 持久化操作设置 900秒内触发一次请求进行持久化,300秒内触发10次请求进行持久化操作,60s内触发10000次请求进行持久化操作

save 900 1
save 300 10
save 60 10000

# 持久化出现错误后,是否依然进行继续进行工作
stop-writes-on-bgsave-error yes

# 使用压缩rdb文件 yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间
rdbcompression yes

# 是否校验rdb文件,更有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗
rdbchecksum yes

# dbfilename的文件名
dbfilename dump.rdb

# dbfilename文件的存放位置
dir ./

################################# REPLICATION #################################

# replicaof 即slaveof 设置主结点的ip和端口
# replicaof <masterip> <masterport>

# 集群节点访问密码
# masterauth <master-password>

# 从结点断开后是否仍然提供数据
replica-serve-stale-data yes

# 设置从节点是否只读
replica-read-only yes

# 是或否创建新进程进行磁盘同步设置
repl-diskless-sync no

# master节点创建子进程前等待的时间
repl-diskless-sync-delay 5

# Replicas发送PING到master的间隔,默认值为10秒。
# repl-ping-replica-period 10

#
# repl-timeout 60

#
repl-disable-tcp-nodelay no

#
# repl-backlog-size 1mb

#
# repl-backlog-ttl 3600

#
replica-priority 100

#
# min-replicas-to-write 3
# min-replicas-max-lag 10
#
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234

################################## SECURITY ###################################

# 设置连接时密码
# requirepass 123456

################################### CLIENTS ####################################

# 最大连接数
# maxclients 10000

############################## MEMORY MANAGEMENT ################################

# redis配置的最大内存容量
# maxmemory <bytes>

# 内存达到上限的处理策略
# maxmemory-policy noeviction

# 处理策略设置的采样值
# maxmemory-samples 5

# 是否开启 replica 最大内存限制
# replica-ignore-maxmemory yes

############################# LAZY FREEING ####################################

# 惰性删除或延迟释放
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

############################## APPEND ONLY MODE ###############################

# 是否使用AOF持久化方式
appendonly no

# appendfilename的文件名

appendfilename "appendonly.aof"

# 持久化策略
# appendfsync always
appendfsync everysec
# appendfsync no

# 持久化时(RDB的save | aof重写)是否可以运用Appendfsync,用默认no即可,保证数据安全性
no-appendfsync-on-rewrite no

# 设置重写的基准值
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 指定当发生AOF文件末尾截断时,加载文件还是报错退出
aof-load-truncated yes

# 开启混合持久化,更快的AOF重写和启动时数据恢复
aof-use-rdb-preamble yes

################################ REDIS CLUSTER ###############################

# 是否开启集群
# cluster-enabled yes

# 集群结点信息文件
# cluster-config-file nodes-6379.conf

# 等待节点回复的时限
# cluster-node-timeout 15000

# 结点重连规则参数
# cluster-replica-validity-factor 10

#
# cluster-migration-barrier 1

#
# cluster-require-full-coverage yes

#
# cluster-replica-no-failover no

查看 redis 启动情况

1
docker ps

docker-redis

进入 redis 容器中

1
docker exec -it my-redis /bin/bash

输入如下命令

1
2
redis-cli
ping

返回如下图

redis-cli

远程 redis-cli 语法

1
$ redis-cli -h host -p port -a password

h ip 地址

p – 端口

a – 密码


如何学以致用,在哪些场景中应用Redis

《Go语言+Redis实战课》

Go语言+Redis实战课-课程大纲 《Go语言+Redis实战课》课程+优惠券合并照片
添加微信 公众号更多内容
wechat gzh