1:NoSQL 产品(key-value)
RDBMS :MySQL,Oracle ,MSSQL,PG
NoSQL:Redis,MongoDB,列存储存储相关
NewSQL----->分布式数据库架构(学习了MongoDB)
缓存产品介绍:
memcached (大公司会做二次开发)
redis
Tair
2:Redis功能介绍
数据类型丰富
支持持久化
多种内存分配及回收策略
支持事务
消息队列、消息订阅
支持高可用
支持分布式分片集群
缓存穿透\雪崩
Redis API
3:企业缓存产品介绍
Memcached:多核的缓存服务,更加适合于多用户并发访问次数较少的应用场景
Redis:单核的缓存服务,单节点情况下,更加适合于少量用户,多次访问的应用场景。
Redis一般是单机多实例架构,配合redis集群出现。
4:Redis安装部署
下载:
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
解压:
上传至 /data
tar xzf redis-3.2.12.tar.gz
mv redis-3.2.12 redis
安装:
cd redis
sudo apt-get install make
make
如果出现以下的错误
cd src && make all
make[1]: Entering directory'/home/ubuntu/redis-4.0.11/src'
CC adlist.o
/bin/sh:1:cc:not found
Makefile:228: recipefortarget'adlist.o'failed
make[1]: *** [adlist.o] Error127
make[1]: Leaving directory'/home/ubuntu/redis-4.0.11/src'
Makefile:6: recipefortarget'all'failed
make:*** [all] Error2
则可以安装 gcc
sudo apt-get install gcc
如果报错如下所示
cd src && make all
make[1]: Enteringdirectory'/home/ubuntu/redis-4.0.11/src'
CC adlist.o
In file includedfromadlist.c:34:0:
zmalloc.h:50:10: fatalerror: jemalloc/jemalloc.h: No such fileordirectory
#include <jemalloc/jemalloc.h>
^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:228: recipefortarget'adlist.o'failed
make[1]: *** [adlist.o]Error1
make[1]: Leavingdirectory'/home/ubuntu/redis-4.0.11/src'
则可以通过
make MALLOC=libc
来替代make命令,即可编译成功
环境变量:
vim /etc/profile
export PATH=/data/redis/src:$PATH
source /etc/profile
启动:
redis-server &
连接测试:
redis-cli
127.0.0.1:6379> set num 10
OK
127.0.0.1:6379> get num
10
127.0.0.1:6379> exit
5、Redis基本管理操作
5.1基础配置文件介绍
创建文件夹 编辑配置文件
mkdir /data/6379
cat > /data/6379/redis.conf<<EOF
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename dump.rdb
EOF
启动配置文件
redis-cli shutdown
redis-server /data/6379/redis.conf
netstat -lnp|grep 63
+++++++++++配置文件说明++++++++++++++
redis.conf
是否后台运行:
daemonize yes
默认端口:
port 6379
日志文件位置
logfile /var/log/redis.log
持久化文件存储位置
dir /data/6379
RDB持久化数据文件:
dbfilename dump.rdb
++++++++++++++++++++++++++++++++++++++
redis-cli
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
5.2 redis安全配置
redis-cli -h 192.168.1.4 -p 6379
通过ip地址连接,做插入语句会报错,产生安全模式, 需要对配置文件进行配置
redis默认开启了保护模式,只允许本地回环地址登录并访问数据库。
禁止protected-mode
protected-mode yes/no (保护模式,是否只允许本地访问)
(1)Bind :指定IP进行监听
vim /data/6379/redis.conf
bind 10.0.0.51 127.0.0.1
(2)增加requirepass {password}
vim /data/6379/redis.conf
requirepass 123456
----------验证-----
方法一:
[root@db03 ~]# redis-cli -a 123456
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> exit
方法二:
[root@db03 ~]# redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set a b
[root@db01 src]# redis-cli -a 123 -h 10.0.0.51 -p 6379
10.0.0.51:6379> set b 2
OK
5.3 在线查看和修改配置
CONFIG GET *
CONFIG GET requirepass
CONFIG GET r*
CONFIG SET requirepass 123
5.4 redis持久化(内存数据保存到磁盘)
redis 支持2个持久化方法:RDB、AOF
RDB 持久化:可以在指定的时间间隔内生成数据集的 时间点快照(point-in-time snapshot)。 优点:速度快,适合于用做备份,主从复制也是基于RDB持久化功能实现的。 缺点:会有数据丢失
AOF 持久化(append-only log file):记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。
AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。
优点:可以最大程度保证数据不丢
缺点:日志记录量级比较大
rdb持久化核心配置参数:
vim /data/6379/redis.conf
dir /data/6379
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
配置分别表示:
900秒(15分钟)内有1个更改
300秒(5分钟)内有10个更改
60秒内有10000个更改
AOF持久化配置
appendonly yes #打开aof日志功能
appendfsync always # 每1个命令,都立即同步到aof
appendfsync everysec # 每秒写1次
appendfsync no #入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof.
vim /data/6379/redis.conf
appendonly yes
appendfsync everysec
问题:redis 持久化方式有哪些?有什么区别?
rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能
aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog