高速读写
数据类型丰富 (笔试、面试)*****
支持持久化 (笔试、面试)*****
多种内存分配及回收策略
支持事务 (面试) ****
消息队列、消息订阅
支持高可用 ****
支持分布式分片集群 (面试) *****
缓存穿透\雪崩(笔试、面试) *****
Redis API **mysql
优势:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash
多核结构、多线程读写性能高。
缺点:无持久化、节点故障可能出现缓存穿透、分布式须要客户端实现、跨机房数据同步困难、架构扩容复杂度
高面试
优势:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高
缺点:多线程读写较Memcached慢
新浪、京东、直播类平台、网页游戏
memcache与redis在读写性能的对比redis
memcached 适合,多用户访问,每一个用户少许的rw
redis 适合,少用户访问,每一个用户大量rw sql
优势:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、支持分布式分片集群、支撑了几乎全部淘宝业务的缓存。
缺点:单机状况下,读写性能较其余两种产品较慢数据库
Memcached:多核的缓存服务,更加适合于多用户并发访问次数较少的应用场景vim
Redis:单核的缓存服务,单节点状况下,更加适合于少许用户,屡次访问的应用场景。缓存
Redis通常是单机多实例架构,配合redis集群出现。安全
-----------------------------------------------------------------------服务器
下载:
wget http://download.redis.io/releases/redis-3.2.12.tar.gz
解压:
上传至 /data
tar xzf redis-3.2.12.tar.gz
mv redis-3.2.12 redis
安装:
cd redis
make
启动:
src/redis-server &多线程
环境变量:
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
[root@standby ~]# redis-cli shutdown
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
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"
redis-cli 客户端命令经常使用参数说明
redis-cli 刚装完,能够在redis服务器上直接登陆redis
-p 6379 指定端口号
-h 指定连接地址
-a 指定连接密码
redis-cli set num 10 ,无交互执行redis命令
cat /tmp/1.txt |redis-cli
[root@db01 ~]# redis-cli -h 10.0.0.51 -p 6379
10.0.0.51:6379>
-------------------------
redis默认开启了保护模式,只容许本地回环地址登陆并访问数据库。
禁止protected-mode
protected-mode yes/no (保护模式,是否只容许本地访问)
----------------------
(1)Bind :指定IP进行监听
echo "bind 10.0.0.200 127.0.0.1" >>/data/6379/redis.conf
(2)增长requirepass {password}
echo "requirepass 123" >>/data/6379/redis.conf
重启redis
redis-cli shutdown
redis-server /data/6379/redis.conf
----------验证-----
方法一:
[root@db03 ~]# redis-cli -a 123
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 123
OK
127.0.0.1:6379> set a b
CONFIG GET *
CONFIG GET requirepass
CONFIG SET requirepass 123
做用:能够有效防止,在redis宕机后,缓存失效的问题.
RDB
AOF
RDB 持久化
能够在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
优势:速度快,适合于用作备份,主从复制也是基于RDB持久化功能实现的。
缺点:会有数据丢失
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 持久化(append-only log file)
记录服务器执行的全部写操做命令,并在服务器启动时,经过从新执行这些命令来还原数据集。
AOF 文件中的命令所有以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。
优势:能够最大程度保证数据不丢
缺点:日志记录量级比较大
-------------
AOF持久化配置
appendonly yes
appendfsync everysec
appendfsync always
appendfsync no
是否打开aof日志功能
每1个命令,都当即同步到aof
每秒写1次
写入工做交给操做系统,由操做系统判断缓冲区大小,统一写入到aof.
vim /data/6379/redis.conf
appendonly yes
appendfsync everysec
面试: redis 持久化方式有哪些?有什么区别?rdb:基于快照的持久化,速度更快,通常用做备份,主从复制也是依赖于rdb持久化功能aof:以追加的方式记录redis操做日志的文件。能够最大程度的保证redis数据安全,相似于mysql的binlog